senden Sie E-Mail mit angehängten Dateien in ZF2
So senden Sie ein E-Mail mit text/plain, text/html und legt in zf2 ?
Ich habe diesen code verwenden, um E-Mail senden mit smtp:
$files = $this->params()->fromFiles();
$smtp = new \Zend\Mail\Transport\Smtp();
$smtp->setAutoDisconnect(true);
$optn = new \Zend\Mail\Transport\SmtpOptions(array(
'host' => 'mail.myserver.com',
'connection_class' => 'login',
'connection_config' => array(
'username' => '[email protected]',
'password' => 'mypassword',
),
));
$smtp->setOptions($optn);
$htmlPart = new \Zend\Mime\Part('<p>some html</p>');
$htmlPart->type = Mime::TYPE_HTML;
$textPart = new \Zend\Mime\Part('some text');
$textPart->type = Mime::TYPE_TEXT;
$i=0;
$attaches = array();
foreach($files as $file){
if ($file['error'])
continue;
$attaches[$i] = new \Zend\Mime\Part(file_get_contents($file['tmp_name']));
$attaches[$i]->type = $file['type'].'; name="'.$file['name'].'"';
$attaches[$i]->encoding = 'base64';
$attaches[$i]->disposition = 'attachment';
$attaches[$i]->filename = $file['name'];
$i++;
}
$parts = array();
if (count($attaches)>0) {
$parts = array_merge(array($textPart,$htmlPart),$attaches);
$type = Mime::MULTIPART_MIXED;
}
else{
$parts = array($textPart, $htmlPart);
$type = Mime::MULTIPART_ALTERNATIVE ;
}
$body = new \Zend\Mime\Message();
$body->setParts($parts);
$message = new \Zend\Mail\Message();
$message->setFrom('[email protected]');
$message->addTo('[email protected]');
$message->setSubject('subject');
$message->setEncoding("UTF-8");
$message->setBody($body);
$message->getHeaders()->get('content-type')->setType($type);
$smtp->send($message);
Wenn ich Dateien Anhängen, sendet er die Dateien und Inhalte, aber es zeigt schlicht und html-text zusammen im Empfänger-Posteingang:
<p>some html</p>
some text
Wenn ich nicht fügen Sie alle Dateien, es zeigt html-text einzeln:
some html
Hilfe?
InformationsquelleAutor Mohammad Mehdi Habibi | 2013-06-12
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Derzeit gibt es keine einfache Möglichkeit in ZF2 (2.2) zu kombinieren multipart/alternative Körper (html mit text-alternative für Kunden, die nicht/gar-nicht-wollen-html) mit Anhängen.
Wenn Sie hinzufügen der 'multipart/alternative' content-type-header, um die gesamte Nachricht, die in einigen E-Mail-clients der Anhang (link) wird nicht angezeigt.
Die Lösung ist das aufteilen der Nachricht in zwei, den Körper (text und html) und die Anlagen:
http://jw-dev.blogspot.com.es/2013/01/zf2-zend-mail-multipartalternative-and.html
Beispiel:
Für die oben genannten müssen Sie die folgenden Anweisungen:
ZF1 hatte
_buildBody()
Methode inZend_Mail_Transport_Abstract
welche Tat dies automatisch.Fand ich es eine bessere Lösung, also Schreibe ich es.
Referenz: http://resoftsol.com/sending-e-mail-with-alternative-parts-plus-attachments/
Legen Sie den Typ aus :
Zu:
Werden Sie auch wollen, um zu bestätigen, dass, wenn Sie über einen SMTP-service, der Sie erlauben attachements durch das Protokoll.
E-Mail-Nachrichten mit Anlagen
Wenn Sie möchten mehr Kontrolle über den MIME-Teil generiert für diese Anlage können Sie mit der return-Wert von createAttachment (), um seine Attribute ändern. Die createAttachment() Methode gibt eine Zend\Mime\Part-Objekt:
Alternative ist die Erstellung einer Instanz von Zend\Mime\Part und fügen ihn mit addAttachment():
Reference1
Reference2
Reference3
Zend\Mime package
.