Symfony Mailer – Enviar Emails

Symfony Mailer

En este artículo veremos como utilizar el componente Symfony Mailer, con la versión 5 de este framework php, haremos uso de la command line tool (cli), siguiendo las buenas prácticas de la documentación con ejemplos en protocolos smtp, sendmail.

Symfony Cli – Iniciar con el proyecto

Primero es necesario crear un proyecto seguiremos el proceso de instalación que nos ofrece la documentación online de symfony.

Creamos un nuevo proyecto con composer, ejecutamos el siguiente comando en una terminal.

composer create-project symfony/website-skeleton sym_mailer

Symfony Cli - Crear proyecto

Ejecutamos el proyecto, luego de darle los permisos con, sudo chmod -R 777 nombreProyecto

symfony server:start

Symfony Mailer - Paso 1

Vamos al navegador donde pegaremos la url del proyecto, lo cual nos mostrara la siguiente salida.

Iniciar proyecto

Symfony Controllers – Creación

Crearemos un nuevo controlador ejecutando el siguiente comando, el cual se llamara Message.

php bin/console make:controller Message

Symfony Controllers

Vamos a la url en el navegador y verificamos la nueva ruta que se ha creado.

Creando un controlador

 

Añadiremos las siguientes líneas de código para trabajar con el componente de envíos de email.


        // usar las siguientes clases
        use Symfony\Component\Mailer\MailerInterface;
        use Symfony\Component\Mime\Email;

      /**
       * @Route("/email")
       */
        public function sendEmail(MailerInterface $mailer): Response
        {
            $email = (new Email())
                ->from('jonathancastro@opengiscrm.com')
                ->to('youemail@gmail.com')          
                ->subject('Tutorial Symfony 5 Mailer!')
                ->text('Tutoriales Cursos y Más Contenido')
                ->html('Integrar Twig para mejorar la funcionalidad');

            $mailer->send($email);

        }
        

Al intentar realizar una petición a la ruta tendremos el siguiente error, hasta que no configuremos las variables de entorno.

Exception ejemplo

Descomentamos con el signo de almohadillas # en el archivo .env


         MAILER_DSN=smtp://localhost
        

Symfony Mailer Smtp – Envíos Email

Tenemos que symfony viene configurado por defecto con smtp (Protocolo para transferencia simple de correo), primero haremos una petición con este protocolo, el cual mostrara la siguiente exception, Connection could not be established with host «localhost:25»: stream_socket_client(): unable to connect to localhost:25 (Connection refused).

Symfony Smtp

Ahora si vamos a la barra de depuración, nos mostrara un correo que ha sido enviado, donde recibimos toda la información, si deseamos combinar el uso de templates podemos usar Twig.

Barra de depuración

Symfony Mailer Sendmail – Emails Local

Ahora realizaremos una nueva petición, con el protocolo sendmail (Protocolo para transferencia simple de correo), el cual nos mostraría la siguiente exception, Connection to «process /usr/sbin/sendmail -bs» has been closed unexpectedly. , he igualmente si vamos a la barra de depuración podemos verificar el email para pruebas.


         MAILER_DSN=sendmail://default
        

Symfony Sendmail

Estas son algunas de las cosas que podemos hacer con el componente mailer de symfony.