Ich fing an, in der Magento 2-Codebasis nach Zeichenfolgen wie "E-Mail", "Nachricht" usw. zu suchen, bis ich etwas fand, das eine E-Mail verschickt. Ich bin auf sendPaymentFailedEmail () in gestoßen vendor/magento/module-checkout/Helper/Data.php
. Dies setzt viele Variablen, bindet sie aber schließlich an ein Transportobjekt, das über einen 'transportBuilder' erstellt wird. Dieser transportBuilder ist eine Instanz von \Magento\Framework\Mail\Template\TransportBuilder
.
In dieser Datei existiert eine $transport
Variable, die eine Instanz von ist \Magento\Framework\Mail\TransportInterface
. Da es eine Schnittstelle gibt, gibt es auch eine reguläre Klasse namens \Magento\Framework\Mail\Transport
. Wenn wir die Datei öffnen vendor/magento/framework/Mail/Transport.php
, sehen wir, dass dies Zend_Mail_Transport_Sendmail erweitert;
Klasse Transport extended \ Zend_Mail_Transport_Sendmail implementiert \ Magento \ Framework \ Mail \ TransportInterface
Das ist was Sie suchen. Mit DI können Sie diesen Transport durch ein anderes E-Mail-Framework anstelle von Zend_Mail wie Mandrill oder Amazon SES ersetzen.
Nur sicher sein , die einschließen send()
Methode , da , dass das Verfahren in genannt wird sendMessage()
;
public function sendMessage()
{
try {
parent::send($this->_message);
} catch (\Exception $e) {
throw new \Magento\Framework\Exception\MailException(new \Magento\Framework\Phrase($e->getMessage()), $e);
}
}
Peter Jaap Blaakmeer
quelle
$email->setBodyHtml($body)
/srv/public_html/pub/test.php
?Es wird oft angenommen, dass
mail()
PHPs veraltet sind und kein drittes unterstützen. Partyservices.Das ist eigentlich falsch, wie jeder gute 3.. Der Party-Service unterstützt eine SMTP-Schnittstelle, und dies
mail()
auch.Amazon SES unterstützt SMTP.
Das Senden über SMTP mit
mail()
wird in der folgenden Antwort beschrieben: /programming//a/14457410/716029quelle
Magento 2 Verwendet die Klasse \ Magento \ Framework \ Mail \ Template \ TransportBuilder , um benutzerdefinierte E-Mails zu senden.
Sie müssen ein einfaches Modul erstellen und die Datei email_tempaltes.xml zum Definieren Ihrer Transaktionsmailvorlagen festlegen.
Sie können E-Mails aus dem Bereich "Adminhtml" oder "Frontend-Bereich" senden.
Ich habe einen Link für eine Schritt-für-Schritt-Anleitung zum Senden einer benutzerdefinierten E-Mail von Magento 2 mithilfe eines Moduls freigegeben.
Senden Sie benutzerdefinierte E-Mails aus dem Magento 2-Modul
quelle