Zend Framework: Alcuni utenti di posta elettronica ottenere gli errori quando si tenta di aprire gli allegati in formato PDF?

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

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();
}
È stato utile?

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...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top