Zend Framework: Certains utilisateurs de messagerie se erreurs en essayant d'ouvrir les pièces jointes PDF?

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

Question

Je vais avoir un problème étrange et ne savez pas comment le dépanner. J'ai créé un script dans un de mes contrôleurs Zend Framework qui permet à un administrateur de se connecter, télécharger un PDF et envoyer en pièce jointe à tout le monde souscrit à la liste de diffusion. Le problème est que certains utilisateurs disent qu'ils sont incapables d'ouvrir la pièce jointe PDF, que le fichier est corrompu. Je pense que cela se passe uniquement aux utilisateurs d'AOL, mais je ne suis pas positif. Avez-vous rencontré ce problème avant? Ou peut-être ce n'est pas un problème avec AOL, mais quelque chose ne va pas avec mon code?

Voici le code qui fait le travail:

En outre, j'utilise la version ZF 1.6.0. Je ne sais pas si cela est pertinent.

//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();
}
Était-ce utile?

La solution

Il semble (pour moi) que cette ligne de code:

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

vous avez besoin probablement d'ajouter les informations d'en-tête supplémentaires disponibles dans la méthode createAttachment du cadre Zend_Mail ::

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

De nombreux fournisseurs de messagerie électronique sont plus grands pour sticklers le strict respect de la politique de bonne e-mail (je l'ai trouvé).

Jouez avec cela et je suis sûr que vous aurez à travailler.

Autres conseils

J'ai aussi eu ce problème.

Je vous suggère de tracer l'info de flux de fichiers en quelque sorte. Le problème avec mon application était que l'appel $fileContents = file_get_contents($fileLocation); ne recevait pas le flux du fichier correctement, donc c'est là que vous pourriez être en train de tomber.

Essayez ceci:

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

Vous devriez voir un tas de charabia où le flux de fichiers est dans le var_dump sous la clé:

["_content:protected"]=>
        string(37129) "%PDF-1.5
        etc...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top