Je suggère de proposer un mail configurable depuis le back-office, et d'utiliser les services du mailer pour l'envoyer.
Pour créer un email personnalisable depuis le back-office, procéder à sa création lors de l'activation du module, en français et en anglais, avec une version texte et une version HTML.
public function postActivation(ConnectionInterface $con = null)
{
if (null === MessageQuery::create()->findOneByName('lenomdumessage')) {
$message = new Message();
$message
->setName('lenomdumessage')
->setLocale('en_US')
->setTitle('Registration confirmation')
->setSubject("Your registration on {config key='store_name'} is confirmed")
->setHtmlMessage(
... le HTML en anglais...
)
->setTextMessage(
... le texte en anglais...
)
->setLocale('fr_FR')
->setTitle('Confirmation inscription')
->setSubject("Confirmation de votre inscription sur {config key='store_name'}")
->setHtmlMessage(
... le HTML en français...
)
->setTextMessage(
... le texte en français...
)
->save();
}
}
Ensuite, dans ton event listener, tu vas pouvoir profiter des services du mailer au lieu d'invoquer directement Swift :
$this->mailer->sendEmailToCustomer(
'lenomdumessage',
$customer,
[ /* Variables évetuelles a passer au message 'var' => 'valeur' */ ]
);
Et voilà, ton module est internationalisé, et s'appuie sur un service de haut niveau pour l'envoi du mail.