J'ai commencé à chercher dans la base de code de Magento 2 des chaînes telles que «e-mail», «message», etc. jusqu'à ce que je trouve quelque chose qui envoie un e-mail. Je suis tombé sur sendPaymentFailedEmail () dans vendor/magento/module-checkout/Helper/Data.php
. Cela définit un grand nombre de variables mais les lie finalement à un objet de transport, qui est créé via un «transportBuilder». Ce transportBuilder est une instance de \Magento\Framework\Mail\Template\TransportBuilder
.
Dans ce fichier, une $transport
variable existe, qui est une instance de \Magento\Framework\Mail\TransportInterface
. Parce qu'il existe une interface, il existe également une classe régulière appelée \Magento\Framework\Mail\Transport
. Lorsque nous ouvrons le fichier vendor/magento/framework/Mail/Transport.php
, nous voyons que cela étend Zend_Mail_Transport_Sendmail;
classe Transport étend \ Zend_Mail_Transport_Sendmail implémente \ Magento \ Framework \ Mail \ TransportInterface
Voilà ce que vous recherchez. En utilisant DI, vous pourrez remplacer ce transport par un autre cadre de messagerie au lieu de Zend_Mail, tel que Mandrill ou Amazon SES.
Assurez-vous simplement d'inclure la send()
méthode car c'est la méthode appelée 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
la source
$email->setBodyHtml($body)
/srv/public_html/pub/test.php
?il y a souvent une hypothèse selon laquelle les PHP sont
mail()
obsolètes et ne soutiennent aucun 3ème. services de fête.C'est en fait faux, comme tout bon 3ème. le service de partie prend en charge une interface SMTP, et il en est de même
mail()
aussi.Amazon SES prend en charge SMTP.
et l'envoi via SMTP avec
mail()
est décrit dans cette réponse: /programming//a/14457410/716029la source
Magento 2 Utilise la classe \ Magento \ Framework \ Mail \ Template \ TransportBuilder pour envoyer des e-mails personnalisés.
Vous devez créer un module simple et définir le fichier email_tempaltes.xml pour définir vos modèles de courrier de transaction.
Vous pouvez envoyer du courrier à partir de la zone Adminhtml ou de l'étendue frontend.
J'ai partagé un lien pour un guide étape par étape pour envoyer un courrier personnalisé depuis Magento 2 à l'aide d'un module.
Envoyer un courrier personnalisé à partir du module Magento 2
la source