Zacząłem wyszukiwać w bazie kodu Magento 2 ciągi znaków, takie jak „e-mail”, „wiadomość” itp., Aż znalazłem coś, co wysyła wiadomość e-mail. Natknąłem się na sendPaymentFailedEmail () w vendor/magento/module-checkout/Helper/Data.php
. To ustawia wiele zmiennych, ale ostatecznie wiąże je z obiektem transportowym, który jest tworzony przez „transportBuilder”. Ten transportBuilder jest instancją klasy \Magento\Framework\Mail\Template\TransportBuilder
.
W tym pliku $transport
istnieje zmienna, która jest instancją \Magento\Framework\Mail\TransportInterface
. Ponieważ istnieje interfejs, istnieje również zwykła klasa o nazwie \Magento\Framework\Mail\Transport
. Kiedy otwieramy plik vendor/magento/framework/Mail/Transport.php
, widzimy, że rozszerza to Zend_Mail_Transport_Sendmail;
klasa Transport rozszerza \ Zend_Mail_Transport_Sendmail implementuje \ Magento \ Framework \ Mail \ TransportInterface
Tego właśnie szukasz. Korzystając z DI, będziesz mógł zastąpić ten transport inną strukturą e-mail zamiast Zend_Mail, taką jak Mandrill lub Amazon SES.
Pamiętaj tylko, aby dołączyć send()
metodę, ponieważ jest to metoda wywoływana 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
źródło
$email->setBodyHtml($body)
/srv/public_html/pub/test.php
?często przyjmuje się założenie, że PHP są
mail()
przestarzałe i nie obsługują żadnego trzeciego. usługi imprezowe.To jest właściwie złe, jak każde dobre 3 miejsce. usługa party obsługuje interfejs SMTP, a także to
mail()
samo.Amazon SES obsługuje SMTP.
i wysyłanie za pomocą SMTP z
mail()
jest opisane w tej odpowiedzi: /programming//a/14457410/716029źródło
Magento 2 Wykorzystuje klasę \ Magento \ Framework \ Mail \ Template \ TransportBuilder do wysyłania niestandardowych wiadomości e-mail.
Musisz utworzyć prosty moduł i ustawić plik email_tempaltes.xml do definiowania szablonów transakcji.
Możesz wysyłać pocztę z obszaru administracyjnego lub obszaru Frontend Scope.
Udostępniłem link do przewodnika krok po kroku, aby wysłać niestandardową pocztę z Magento 2 za pomocą modułu.
Wyślij niestandardową pocztę z modułu Magento 2
źródło