Saya mulai mencari-cari string basis kode Magento 2 seperti 'email', 'message', dll hingga saya menemukan sesuatu yang mengirim email. Saya menemukan sendPaymentFailedEmail () di vendor/magento/module-checkout/Helper/Data.php
. Ini menetapkan banyak variabel tetapi akhirnya mengikat mereka ke objek transportasi, yang dibuat melalui 'transportBuilder'. TransportBuilder ini adalah turunan dari \Magento\Framework\Mail\Template\TransportBuilder
.
Dalam file itu, $transport
ada variabel, yang merupakan turunan dari \Magento\Framework\Mail\TransportInterface
. Karena ada antarmuka, ada juga kelas reguler yang disebut \Magento\Framework\Mail\Transport
. Ketika kita membuka file vendor/magento/framework/Mail/Transport.php
, kita melihat bahwa ini meluas Zend_Mail_Transport_Sendmail;
Transport kelas meluas \ Zend_Mail_Transport_Sendmail mengimplementasikan \ Magento \ Framework \ Mail \ TransportInterface
Ini yang kamu cari. Dengan menggunakan DI, Anda dapat mengganti transportasi ini dengan kerangka kerja email lain alih-alih Zend_Mail, seperti Mandrill atau Amazon SES.
Pastikan untuk memasukkan send()
metode karena itu adalah metode yang dipanggil 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)