Zend Framework: Algunos usuarios de correo electrónico obtiene errores al intentar abrir los archivos adjuntos PDF?

StackOverflow https://stackoverflow.com/questions/733040

Pregunta

Estoy teniendo un problema extraño y no está seguro de cómo solucionar él. He creado un script en una de mis controladores de Zend Framework que permite a un administrador para iniciar sesión, subir un PDF, y enviar como archivo adjunto a todas las personas suscritas a la lista de correo. El problema es que algunos usuarios reportan que no son capaces de abrir el archivo PDF adjunto, que el archivo está dañado. Creo que esto está sucediendo solamente a los usuarios de AOL, pero no soy positivo. ¿Se ha encontrado con este problema antes? O tal vez no es un problema con AOL, pero algo malo en mi código?

Este es el código que hace el trabajo:

Además, estoy usando la versión 1.6.0 ZF. No estoy seguro si esto es relevante.

//assuming the form is valid:
$table = new Subscribers();
$rowset = $table->fetchAll();
foreach ($rowset as $row) {
    $mail = new Zend_Mail();
    $mail->setBodyText($form->getElement('body')->getValue())
         ->setFrom('weekly-update@email.com', 'Weekly Update')
         ->addTo($row->email)
         ->setSubject($form->getElement('subject')->getValue());
    $fileLocation = $form->getElement('attachment')->getValue();
    $fileContents = file_get_contents($fileLocation);
    $attachment = $mail->createAttachment($fileContents);
    $attachment->filename = str_replace(Zend_Registry::get('config')->downloadsLocation . '/', '', $fileLocation);          
    $mail->send();
}
¿Fue útil?

Solución

Parece (para mí) que en esta línea de código:

$attachment = $mail->createAttachment($fileContents);

lo más probable es necesario agregar la información de cabecera adicional disponible en el método del marco createAttachment Zend_Mail ::

$attachment = $mail->createAttachment($fileContents,
                        Zend_Mime::DISPOSITION_INLINE);

Muchos proveedores de correo electrónico más grandes son muy rigurosos con el cumplimiento estricto de una buena política de correo electrónico (que he encontrado).

Juega un poco con esto y estoy seguro de que va a conseguir que funcione.

Otros consejos

También tuve este problema.

Me gustaría sugerir que traza la información flujo de archivos de alguna manera. El problema con mi aplicación fue que la llamada $fileContents = file_get_contents($fileLocation); no estaba recibiendo la corriente del archivo correctamente, por lo que este es el lugar donde es posible que se caiga.

Prueba esto:

$mail = new Zend_Mail();
...
var_dump($mail->send());

Debería ver un montón de galimatías en el que el flujo de archivos sale en la var_dump bajo la clave:

["_content:protected"]=>
        string(37129) "%PDF-1.5
        etc...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top