Bir e-posta gönderen bir şey bulana kadar Magento 2 kod tabanında 'e-posta', 'mesaj' vb. Gibi dizeleri aramaya başladım. SendPaymentFailedEmail () 'in üzerine tökezledi vendor/magento/module-checkout/Helper/Data.php
. Bu, pek çok değişken belirler ancak sonunda onları bir 'transportBuilder' ile oluşturulan bir transport nesnesine bağlar. Bu transportBuilder bir örneğidir \Magento\Framework\Mail\Template\TransportBuilder
.
Bu dosyada, $transport
bir örneği olan bir değişken var \Magento\Framework\Mail\TransportInterface
. Arayüz olduğu için denilen düzenli bir sınıf da var \Magento\Framework\Mail\Transport
. Dosyayı vendor/magento/framework/Mail/Transport.php
açtığımızda, bunun Zend_Mail_Transport_Sendmail;
sınıf Aktarımı \ Zend_Mail_Transport_Sendmail \ Magento \ Framework \ Mail \ TransportInterface öğelerini uygular
Aradığın şey bu. DI kullanarak, bu aktarımı, Mandrill veya Amazon SES gibi Zend_Mail yerine başka bir e-posta çerçevesiyle değiştirebilirsiniz.
Sadece bu send()
yöntemi içerdiğinden emin olun çünkü o yöntemde 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);
}
}
$email->setBodyHtml($body)