Я начал искать в базе кода Magento 2 строки, такие как «электронная почта», «сообщение» и т. Д., Пока не нашел что-то, что отправляет электронное письмо. Я наткнулся на sendPaymentFailedEmail () в vendor/magento/module-checkout/Helper/Data.php
. Это устанавливает множество переменных, но в конечном итоге связывает их с транспортным объектом, который создается через «transportBuilder». Этот transportBuilder является экземпляром \Magento\Framework\Mail\Template\TransportBuilder
.
В этом файле существует $transport
переменная, которая является экземпляром \Magento\Framework\Mail\TransportInterface
. Поскольку существует интерфейс, существует также обычный класс с именем \Magento\Framework\Mail\Transport
. Когда мы открываем файл vendor/magento/framework/Mail/Transport.php
, мы видим, что это расширяет Zend_Mail_Transport_Sendmail;
Транспортный класс extends \ Zend_Mail_Transport_Sendmail внедряет \ Magento \ Framework \ Mail \ TransportInterface
Это то, что вы ищете. Используя DI, вы сможете заменить этот транспорт другой структурой электронной почты вместо Zend_Mail, такой как Mandrill или Amazon SES.
Просто обязательно включите send()
метод, так как это метод, вызываемый в 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)
/srv/public_html/pub/test.php
?часто делается предположение о том, что PHP
mail()
устарел и не поддерживает 3-й. партийные услуги.Это на самом деле неправильно, как и каждый хороший 3-й. Служба party поддерживает SMTP-интерфейс, и так же
mail()
.Amazon SES поддерживает SMTP.
и отправка через SMTP с
mail()
описана в этом ответе: /programming//a/14457410/716029источник
Magento 2 Использует класс \ Magento \ Framework \ Mail \ Template \ TransportBuilder для отправки пользовательских писем.
Вам нужно создать простой модуль и установить файл email_tempaltes.xml для определения шаблонов почтовых транзакций.
Вы можете отправлять почту из области Adminhtml или Frontend Scope.
Я поделился ссылкой для пошагового руководства по отправке пользовательских писем из Magento 2 с помощью модуля.
Отправить пользовательскую почту из модуля Magento 2
источник