2009-10-26 38 views

Respuesta

5

Probablemente tendrá que hacer lo siguiente:!

  1. Escribir un script PHP que es ejecutable en el CLI (mediante la adición de un # declaración en la parte superior de la secuencia de comandos que apunta al binario PHP, entonces Configura sus permisos ejecutables).

  2. Consigue que la secuencia de comandos para leer el correo electrónico en bruto de php: // stdin (file_get_contents es más fácil)

  3. conseguir que la secuencia de comandos para decodificar el correo en las piezas, usando algo como PEAR :: Correo :: Mimo :: Decode o creo que hay un práctico componente de Zend Framework).

  4. Leer el archivo adjunto y sujeto del mensaje decodificado, y almacenar de forma normal

  5. salida (0) en el extremo de decir la CLI que era una salida limpia - cualquier otra salida() Estado podría causar un correo electrónico rebotado

+0

Gracias! Soy nuevo en los archivos ejecutables, así que tendré que investigarlo, ¿conoce algún vínculo que pueda ser útil para mí :) – tarnfeld

5

Existe una librería PHP, llamado php-mime-mail-parser que a su vez depende de la PECL mailparse library. Cuando haya instalado los, el código para lograr lo que quiere es bastante sencillo:

<?php 
require_once 'MimeMailParser.class.php'; 

$parser = new MimeMailParser(); 
$parser->setStream(STDIN); 

$subject = $parser->getHeader('subject'); 

$attachment_content = false; 
foreach ($parser->getAttachments() as $attachment) { 
    $extension = pathinfo($attachment->filename, PATHINFO_EXTENSION); 
    if ($extension == "txt") { 
     $attachment_content = $attachment->content; 
     break; 
    } 
} 

// adapt to what ever database you are using 
$sth = $mysqli->prepare("INSERT INTO mails (subject, attachment) VALUES (:subject, :attachment)"); 
$sth->bindParam(':subject', $subject, PDO::PARAM_STR); 
$sth->bindParam(':attachment', $attachment_content, PDO::PARAM_STR); 
$sth->execute(); 

Puede canalizar el correo en el guión, como se lee a partir STDIN. También puede leer un archivo cambiando setStream a setPath. Vea el documentation of the library.

+3

Esta debería ser la respuesta correcta – Daniel

+0

¿Qué tipo de cambios se requieren para guardar y almacenar un archivo PDF? ¿Hay algún tipo de cifrado o codificación que deba tratarse o simplemente cambie el txt a pdf? – Tarquin

+0

Almacenar el contenido de un archivo PDF en un campo de base de datos no es algo que recomiendo. Mejor almacenarlo en el sistema de archivos y simplemente almacenar la ruta. – akirk

Cuestiones relacionadas