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
Ejecutamos el proyecto, luego de darle los permisos con, sudo chmod -R 777 nombreProyecto
symfony server:start
Vamos al navegador donde pegaremos la url del proyecto, lo cual nos mostrara la siguiente salida.
Symfony Controllers – Creación
Crearemos un nuevo controlador ejecutando el siguiente comando, el cual se llamara Message.
php bin/console make:controller Message
Vamos a la url en el navegador y verificamos la nueva ruta que se ha creado.
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.
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).
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.
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
Estas son algunas de las cosas que podemos hacer con el componente mailer de symfony.