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, $transportbir ö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.phpaç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)