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);
}
}
Peter Jaap Blaakmeer
fuente
$email->setBodyHtml($body)
/srv/public_html/pub/test.php
?a menudo se asume que los PHP están
mail()
desactualizados y no son compatibles con ningún tercero. servicios de fiesta.Eso está realmente mal, como cada 3º bueno. party service admite una interfaz SMTP, y también lo hace
mail()
.Amazon SES es compatible con SMTP.
y el envío a través de SMTP
mail()
se describe en esta respuesta: /programming//a/14457410/716029fuente
Magento 2 utiliza la clase \ Magento \ Framework \ Mail \ Template \ TransportBuilder para enviar correos electrónicos personalizados.
Debe crear un módulo simple y configurar el archivo email_tempaltes.xml para definir sus plantillas de correo de transacciones.
Puede enviar correo desde el área Adminhtml o Frontend Scope.
He compartido un enlace para la guía paso a paso para enviar un correo personalizado desde Magento 2 usando un módulo.
Enviar correo personalizado desde el módulo Magento 2
fuente