Frage

Ich habe ein seltsames Problem und nicht sicher, wie es zu beheben. Ich habe ein Skript in einem meiner Zend Framework-Controller erstellt, die ein Administrator eingeloggt sein können, ein PDF laden und als Anhang an jeder an die Mailingliste abonniert senden. Das Problem ist, dass einige Nutzer berichten, dass sie nicht in der Lage, den PDF-Anhang zu öffnen, dass die Datei beschädigt ist. Ich denke, dass dies nur geschieht, um AOL-Benutzer, aber ich bin nicht positiv. Haben Sie dieses Problem vor? Oder vielleicht ist es kein Problem mit AOL, aber etwas falsch mit meinem Code?

Hier ist der Code, der die Arbeit tut:

Auch ich bin mit ZF-Version 1.6.0. Nicht sicher, ob das relevant ist.

//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();
}
War es hilfreich?

Lösung

Es scheint (mir), dass in dieser Codezeile:

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

Sie müssen wahrscheinlich die zusätzliche Header-Informationen in der create Methode des Zend_Mail Rahmen ::

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

Viele größere E-Mail-Anbieter sticklers für die strikte Einhaltung gute E-Mail-Politik sind (ich habe festgestellt).

mit diesem Spiel herum und ich bin sicher, dass Sie es an die Arbeit.

Andere Tipps

Ich habe auch dieses Problem.

Ich würde vorschlagen, dass Sie irgendwie die Datei-Stream-Info nachzuspüren. Das Problem mit meiner app war, dass der Anruf nicht $fileContents = file_get_contents($fileLocation); wurde den Strom der Datei richtig bekommen, so ist dies, wo Sie könnte nach unten fallen.

Versuchen Sie folgendes:

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

Sie sollten eine Reihe von Kauderwelsch sehen, wo der Datei-Stream unter dem Schlüssel in der var_dump kommt aus:

["_content:protected"]=>
        string(37129) "%PDF-1.5
        etc...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top