Zend Framework: Alcuni utenti di posta elettronica ottenere gli errori quando si tenta di aprire gli allegati in formato PDF?
-
06-09-2019 - |
Domanda
Sto avendo un problema strano e non è sicuro come risolvere esso. Ho creato uno script in uno dei miei regolatori di Zend Framework che consente agli amministratori di accedere, caricare un file PDF, e inviare come allegato a tutti iscritti alla mailing list. Il problema è che alcuni utenti segnalano che non sono in grado di aprire l'allegato PDF, che il file è corrotto. Credo che questo sta accadendo solo per gli utenti di AOL, ma io non sono positive. Avete incontrato questo problema prima? O forse non è un problema con AOL, ma qualcosa di sbagliato con il mio codice?
Ecco il codice che fa il lavoro:
Inoltre, sto usando la versione 1.6.0 ZF. Non sono sicuro se questo è rilevante.
//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();
}
Soluzione
Sembra (a me) che in questa riga di codice:
$attachment = $mail->createAttachment($fileContents);
probabilmente necessario aggiungere le informazioni di intestazione supplementari disponibili nel metodo createAttachment del quadro Zend_Mail ::
$attachment = $mail->createAttachment($fileContents,
Zend_Mime::DISPOSITION_INLINE);
Molti provider di posta elettronica più grande sono molto intransigenti per il rispetto rigoroso di buona politica e-mail (che ho trovato).
Giocare con questo e sono sicuro che si arriva a farlo funzionare.
Altri suggerimenti
Ho anche avuto questo problema.
Io suggerirei si traccia il file di informazioni flusso in qualche modo. Il problema con la mia app è che la chiamata $fileContents = file_get_contents($fileLocation);
non stava ottenendo il flusso del file in modo corretto, quindi questo è dove si potrebbe essere cadendo verso il basso.
Prova questo:
$mail = new Zend_Mail();
...
var_dump($mail->send());
Si dovrebbe vedere un mucchio di parole senza senso in cui il flusso di file viene fuori nel var_dump sotto la chiave:
["_content:protected"]=>
string(37129) "%PDF-1.5
etc...