Nuevo en Symfony 4.3: Componente Mailer
Symfony 4.3, que se publicó en mayo de 2019, añadió tres nuevos componentes. En este sitio ya hemos hablado sobre dos de ellos: HttpClient y Mime. Este artículo presenta el otro componente que falta: el componente Mailer.
Mientras que el componente Mime permite crear los mensajes de correo electrónico, el componente Mailer es el que realmente los envía. Los mensajes se envían mediante "transports", que pueden ser desde un servidor SMTP local hasta un servicio de terceros para envío masivo de emails.
El componente incluye soporte para los siguientes servicios: Amazon SES, MailChimp, Mailgun, Gmail, Postmark y SendGrid. Cada uno de ellos se instala por separado, así que si quieres por ejemplo usar en tu aplicación Amazon SES, ejecuta lo siguiente:
$ composer require symfony/amazon-mailer
Estos paquetes añaden algunas variables de entorno en el archivo .env
para
que puedas configurarlos. Por ejemplo, en el caso de Amazon:
# .env AWS_ACCESS_KEY=... AWS_SECRET_KEY=... MAILER_DSN=smtp://$AWS_ACCESS_KEY:$AWS_SECRET_KEY@ses
Y eso es todo lo que tienes que hacer. Ahora ya puedes inyectar el servicio de
envío de emails en cualquier otro servicio simplemente añadiendo un argumento de
constructor con la clase MailerInterface
:
use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Email; class SomeService { private $mailer; public function __construct(MailerInterface $mailer) { $this->mailer = $mailer; } public function sendNotification() { $email = (new Email()) ->from('[email protected]') ->to('[email protected]') ->subject('Time for Symfony Mailer!') ->text('Sending emails is fun again!') ->html('<p>See Twig integration for better HTML integration!</p>'); $this->mailer->send($email); } }
Cuando llamas a $this->mailer->send($email)
, el mensaje se envía inmediatamente.
Si quieres mejorar el rendimiento, usa el componente Messenger para envíar
los mensajes de manera asíncrona. Lee este artículo de la documentación de Symfony
para aprender más sobre cómo hacerlo.
Esta funcionalidad fue contribuida por Fabien Potencier en el pull request #30741.
Fuente: New in Symfony 4.3: Mailer component
Comentarios
Proyectos Symfony destacados
La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.