Comencé a buscar en la base de código de Magento 2 cadenas como 'correo electrónico', 'mensaje', etc. hasta que encontré algo que envía un correo electrónico. Me topé con sendPaymentFailedEmail () en vendor/magento/module-checkout/Helper/Data.php
. Esto establece muchas variables, pero finalmente las vincula a un objeto de transporte, que se crea a través de un 'transportBuilder'. Este transportBuilder es una instancia de \Magento\Framework\Mail\Template\TransportBuilder
.
En ese archivo, $transport
existe una variable, que es una instancia de \Magento\Framework\Mail\TransportInterface
. Como hay una interfaz, también hay una clase regular llamada \Magento\Framework\Mail\Transport
. Cuando abrimos el archivo vendor/magento/framework/Mail/Transport.php
, vemos que esto extiende Zend_Mail_Transport_Sendmail;
El transporte de clase se extiende \ Zend_Mail_Transport_Sendmail implementa \ Magento \ Framework \ Mail \ TransportInterface
Esto es lo que estás buscando. Con DI, podrá reemplazar este transporte con otro marco de correo electrónico en lugar de Zend_Mail, como Mandrill o Amazon SES.
Solo asegúrese de incluir el send()
método ya que ese es el método llamado 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)