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);
}
}
Peter Jaap Blaakmeer
sumber
$email->setBodyHtml($body)
/srv/public_html/pub/test.php
?ada asumsi yang sering dibuat tentang PHP karena
mail()
ketinggalan zaman dan tidak mendukung ke-3. layanan pesta.Itu sebenarnya salah, karena setiap 3 bagus. layanan pihak mendukung antarmuka SMTP, dan
mail()
juga demikian.Amazon SES mendukung SMTP.
dan mengirim melalui SMTP dengan
mail()
dijelaskan dalam jawaban ini: /programming//a/14457410/716029sumber
Magento 2 Menggunakan \ Magento \ Framework \ Mail \ Template \ TransportBuilder kelas untuk mengirim email khusus.
Anda perlu membuat modul sederhana dan mengatur file email_tempaltes.xml untuk mendefinisikan template email transaksi Anda.
Anda dapat mengirim email dari Adminhtml atau area Lingkup Frontend.
Saya telah membagikan tautan untuk panduan langkah demi langkah untuk mengirim surat khusus dari Magento 2 menggunakan modul.
Kirim Surat Kustom dari Modul Magento 2
sumber