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

Publicada el

3 de julio de 2019

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.