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, $transportexiste 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)