Erstellen von HTML-E-mails in Zend Framework 2 mit Zend_Mail + Zend_Mime
Zend framework verändert die Zend_Mail Objekt, damit es nicht mehr setBodyHtml () - Methode zum erstellen von HTML-e-mails.
Weiß jemand, wie man erstellen Sie eine HTML-e-mail mit dem ZF2 Mail-Komponente? Bisher habe ich versucht:
$html = new \Zend\Mime\Part($htmlText);
$html->type = \Zend\Mime\Mime::TYPE_HTML;
$html->disposition = \Zend\Mime\Mime::DISPOSITION_INLINE;
$html->encoding = \Zend\Mime\Mime::ENCODING_QUOTEDPRINTABLE;
$html->charset = 'iso-8859-1';
$body = new \Zend\Mime\Message();
$body->addPart($html);
$message = new \Zend\Mail\Message();
$message->setBody($body);
$message->addTo('[email protected]', 'User1');
$message->addFrom('[email protected]', 'User2');
$message->setSubject('Test');
Die resultierende E-Mail ist:
MIME-Version: 1.0
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
From: XYZ
Bericht der letzten Monate log-Dateien=0A=09=09=09=0A=09=
=>09=09=0A=09=09=09Test=0A =09=09=09=0A=09=09=09
l>
InformationsquelleAutor user521990 | 2012-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich heraus, es ist ein Problem, wie ich gefunden habe, mit der \Zend\Mail\Header-Komponente.
Bin ich mit einem linux-basierten Rechner als host für meine php-Maschine, die bedeutet, dass jede Zeile in einer E-Mail sollte "\r" angehängt. Für Windows ist es "\r\n".
Den EOL-Konstante in die \Zend\Mail\Header-Datei wird bei "\r\n" bewirkt, dass der Header in der e-mail gesendet, wenn von einer linux-Maschine.
Die beste Methode hierbei ist die Verwendung der Konstante PHP_EOL, die erkennt automatisch die Plattform und verwendet das RICHTIGE Ende der Zeile code.
Um dies zu beheben:
Müssen Sie aktualisieren Sie Ihre \Zend\Mail\Header-EOL-Konstante, gleich PHP_EOL. Auch wenn UTF-8 verwenden, müssen Sie sicherstellen, dass es ist die Letzte Sache, die aufgerufen wird, auf Ihre Nachricht. Es muss getan werden, nachdem der Körper eingestellt ist.
Habe ich in einem ticket zu ZF2 2.0-team, um es zu betrachten
Dies ist ein funktionierendes Beispiel:
diese Antwort ist FALSCH! Verwenden Sie nicht die Konstante PHP_EOL!
Warum tun Sie instanziieren Sie eine Nachricht Art-Objekt in ein ...Teil benannte variable und ein Teil der Typ object in a ...Nachricht mit dem Namen variable ? Es fügt Verwirrung.
InformationsquelleAutor user521990
ich hoffe, dass diese Hilfe Sie
InformationsquelleAutor Mohammad Mehdi Habibi
Schlage ich die Lektüre dieser blog.
Grundsätzlich nicht mehr
setBodyHtml()
Sie haben nursetBody()
. Dies ist aufgrund der Art, wie moderne E-Mail-Leser zu arbeiten. Jeder Leser hat die Möglichkeit, zur Darstellung. Die meisten E-Mails werden im HTML-heute. Aber Sie sind immer noch in der Lage zum anzeigen einer HTML-E-Mail als Klartext, auch, da der HTML-Teil einfach zu bekommen ist, 'übersetzt', indem die jeweiligen Programme.In ZF2, um die Unterstützung von HTML-E-Mails UND nur-Text-E-Mail fügen Sie einfach beide mime-Typen. Und wenn der Klartext gesucht ist, wird die E-Mail-Programm damit umgehen. Zumindest so verstehe ich die aktuelle Sache in ZF2 und mit den genannten blog.
Nicht versuchen, es selbst, sorry, nur referenziert und erklärt sich meinem Verständnis.
sam - siehe meine Antwort unten. Stellte sich heraus, Zend_Mail-Komponente nicht korrekt erstellen-Header für den Linux-basierten Maschinen. - Das war zumindest meine Beobachtung nach, die Dinge zu betrachten, die in weiteren details.
InformationsquelleAutor Sam
Finden Sie unter dem folgenden Beitrag: https://stackoverflow.com/a/34267509/5448467
WasabiMail ist ein E-mail-Modul ist in der Lage, html-E-Mail-Vorlagen in eine bequemere Art und Weise.
InformationsquelleAutor Namron Regrebsubla