Comecei a pesquisar na base de código do Magento 2 por strings como 'email', 'message', etc. até encontrar algo que envia um email. Eu tropecei em sendPaymentFailedEmail () em vendor/magento/module-checkout/Helper/Data.php
. Isso define muitas variáveis, mas eventualmente as vincula a um objeto de transporte, criado por meio de um 'transportBuilder'. Este transportBuilder é uma instância de \Magento\Framework\Mail\Template\TransportBuilder
.
Nesse arquivo, $transport
existe uma variável, que é uma instância de \Magento\Framework\Mail\TransportInterface
. Como existe uma interface, também há uma classe regular chamada \Magento\Framework\Mail\Transport
. Quando abrimos o arquivo vendor/magento/framework/Mail/Transport.php
, vemos que isso estende o Zend_Mail_Transport_Sendmail;
classe Transport estende \ Zend_Mail_Transport_Sendmail implementa \ Magento \ Framework \ Mail \ TransportInterface
Isto é o que você está procurando. Usando o DI, você poderá substituir esse transporte por outra estrutura de email em vez do Zend_Mail, como Mandrill ou Amazon SES.
Apenas certifique-se de incluir o send()
método, pois esse é o método chamado 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
fonte
$email->setBodyHtml($body)
/srv/public_html/pub/test.php
?existe uma suposição frequente de que os PHPs estão
mail()
desatualizados e não suportam nenhum terceiro. serviços de festas.Isso está realmente errado, como todo bom terceiro. O serviço de terceiros suporta uma interface SMTP, e o mesmo acontece
mail()
.O Amazon SES suporta SMTP.
e envio via SMTP com
mail()
está descrito nesta resposta: /programming//a/14457410/716029fonte
Magento 2 Usa a classe \ Magento \ Framework \ Mail \ Template \ TransportBuilder para enviar email personalizado.
Você precisa criar um módulo simples e configurar o arquivo email_tempaltes.xml para definir seus modelos de correio de transação.
Você pode enviar emails da área Adminhtml ou do escopo do front-end.
Compartilhei um link para o guia passo a passo para enviar um e-mail personalizado do Magento 2 usando um módulo.
Enviar correio personalizado do módulo Magento 2
fonte