banner-como-enviar-emails-con-mailtrap

Cuando estamos desarrollando una aplicación es fundamental probar que todo funcione correctamente antes de entregarlas al cliente. Pero, en el caso de los correos, no podemos estar llenando ni nuestra bandeja de correo ni la de nuestros clientes con las pruebas de la aplicación.  Para estos casos, podemos usar Maltrap.io, el cual es un servidor SMTP donde llegarán los correos de nuestra aplicación mientras estemos desarrollando.

Preparación

Debemos registrarnos en Mailtrap.io. Una vez confirmado el correo que nos llega podemos iniciar sesión y ver nuestra bandeja de entrada:

La cuenta gratuita nos ofrece una bandeja de entrada y con un máximo de 50 mensajes, que pueden ser suficiente para poder probar el envío de notificaciones de nuestra aplicación.

Al ingresar al Demo inbox podemos ver las credenciales SMTP con las cuales integraremos la bandeja con nuestra aplicación, igualmente podemos usar la opción Integrations buscando Laravel, donde nos mostrará algo parecido a esto:

integrations-mailtrap

Estos datos dados por Mailtrap son los que debemos agregar en el archivo .env de la aplicación, ya que el archivo de configuración de correos de Laravel /config/mail.php está estructurado para que las credenciales no queden expuestas en el repositorio del código sino que se guarden el archivo .env, además, permitiendo así que se pueda cambiar fácilmente de un servicio a otro, pues es común que tengamos servicios diferentes en el entorno de desarrollo y el entorno de producción.

Por tanto, en el archivo .env de la aplicación sustituimos lo que tiene por las credenciales de la bandeja de Mailtrap

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=3b411ee67e7b5d
MAIL_PASSWORD=0602e19401995c
MAIL_ENCRYPTION=tls

ya con esto configuramos la aplicación de Laravel con Mailtrap.

Ejemplo

Para probar el envío de emails primero creamos el mensaje que se enviará a través del correo, en resources/views/  creando un nuevo directorio llamado emails y dentro de él un archivo notificacion.blade.php que contendrá un mensaje simple como:

Ingresa a más tutoriales en <a href="{{ $link }}">{{ $link }}</a>

Luego creamos la ruta donde usaremos el Facade Mail junto con el método send, el cual acepta tres parámetros: el primero es el nombre de la vista que contiene el mensaje a enviar, el segundo un array de datos con lo que se desea pasar a la vista y por último, una función o Closure que recibe una instancia del mensaje, con la cual podemos personalizar el receptor, el asuntos, entre otros aspectos del correo a enviar.

Route::get('enviar', ['as' => 'enviar', function () {

    $data = ['link' => 'http://styde.net'];

    \Mail::send('emails.notificacion', $data, function ($message) {

        $message->from('[email protected]', 'Styde.Net');

        $message->to('[email protected]')->subject('Notificación');

    });

    return "Se envío el email";
}]);

Al ir a la ruta en nuestro navegador se mostrará el mensaje:

Se envío el email

y en el inbox de Mailtrap podremos ver el correo, en el que no sólo lo vemos como realmente va llegar a la bandeja de entrada de los usuarios de la aplicación sino también podemos ver el código HTML, un análisis del correo enviado, entre otras opciones.

Con Mailtrap tenemos una herramienta para probar el envío de correos de nuestra aplicación sin tener que llenar de SPAM la bandeja de los usuarios reales de la aplicación mientras la estamos desarrollando. Espero que este tutorial les sea útil y le compartan en las redes sociales.

Material relacionado

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Cómo enviar mensajes desde Laravel a Slack Lección siguiente Cómo generar migraciones de una base de datos existente