Comparte en Facebook Twitter Google+

mailgun

El envío de correos electrónicos es una funcionalidad que no puede faltar en una aplicación web, ya sea para confirmar el registro de un nuevo usuario, enviar un boletín de noticias o notificar sobre alguna transacción en la plataforma.

En la actualidad existen muchas plataformas especializadas en realizar estas actividades que permiten manejar grandes campañas de email marketing, ofreciendo ciertas métricas de gran utilidad.

Mailgun  es un servicio de email para desarrolladores que cuenta con una poderosa Api que facilita su uso y acceso desde cualquier plataforma de desarrollo.

Laravel 5 permite integrar este servicio a nuestra aplicación, facilitando el envío de correos desde cualquier controlador.

Formulario de contacto con Laravel 5

Para conocer un poco más sobre esta funcionalidad les enseñaré a construir un formulario básico de contacto que permitirá que los usuarios de la aplicación puedan enviar sus comentarios directamente a nuestra dirección de correo electrónico..

Instalación de Guzzle

Guzzle es un cliente HTTP de PHP que facilita el envío de peticiones HTTP para la integración de servicios web, esta librería es requerida para la integración de Mailgun en Laravel.

Para instalar via composer agregamos la siguiente línea en composer.json

y ejecutamos

Configurar credenciales de mailgun

Una vez instalada la librería procedemos a configurar las credenciales correspondientes a nuestra cuenta de mailgun, si aun no tienes una puedes crearla en pocos minutos accediendo al siguiente enlace : https://mailgun.com/signup. Es muy importante activar tu cuenta una vez creada, lo haces a través de un email de confirmación que recibes después del registro en mailgun.

Ingresando a nuestro perfil tenemos la opción de configurar un dominio personalizado o usar un subdominio creado automáticamente para pruebas, por ahora tomaremos la segunda opción.

mailgun-account

En la sección Mailgun Subdomains hacemos click sobre el enlace para ver las credenciales de acceso para dicho registro.

mailgun-credentials

Recuerda que es recomendable manejar todas las credenciales como variables de entorno desde el archivo .env de nuestra aplicación de la siguiente forma.

en la variable MAILGUN_DOMAIN ingresamos el valor que aparece despues del simbolo @ en el formulario de mailgun en Default STMP Login y en MAILGUN_PASS el valor del API Key.

Podemos definir las siguientes variables dentro del archivo .env

Ahora que contamos con las credenciales definidas en el archivo de configuración, nos dirigimos al archivo services.php ubicado en el directorio app/config y agregamos las siguientes líneas

 

Estos serán los datos de la cuenta de correo a la cual le enviaremos los mensajes desde el formulario de contacto.

Crear formulario con blade

Creamos el siguiente formulario usando el framework twitter bootstrap (integrado con laravel 5), si eres nuevo con blade te recomiendo el Tutorial básico de blade, el sistema de plantillas de Laravel

 

Esta plantilla extiende de ‘app.blade.php’ que viene por defecto en la instalación de laravel, en este caso hacemos uso del componente Form, este componente no viene por defecto por lo cual debes instalarlo vía composer siguiendo este video : Integrando componentes HTML y Form a Laravel

mail-form

Crear rutas de acceso

En este caso he creado una ruta para abrir el formulario y otra para enviar el email con el método post, ambas apuntando al controlador MailController

Crear controlador para el envío de emails

Como siempre podemos hacer uso de artisan

en la función index retornamos la vista de nuestro formulario de contacto

Creamos una función adicional llamada send() que se encargara de manejar la petición enviada desde la vista anterior

Cuando hacemos el llamado a Mail::send, se incluye, en este caso, una vista llamada message creada en el directorio resources/views/emails.

Esta vista será el template del email que vamos a enviar. Mailgun ofrece algunos ejemplos que podemos descargar directamente desde github

https://github.com/mailgun/transactional-email-templates

puedes descargar una plantilla terminada para este ejemplo en

https://gist.github.com/jeffer8a/5fe17c38fc5f7d29f0ea

En este ejemplo, luego de enviar el email retornamos una vista llamada success.

 

mail-response

Enviar email desde el formulario

Ya esta todo listo, desde ahora puedes ingresar a la url de tu proyecto /contact y hacer una prueba rápida cuyo resultado será algo así

Nota: recuerda verificar tu bandeja de spam en caso de que no veas el mensaje en recibidos.

Opcional

Mailgun permite el envio de emails utiliznado el protocolo SMTP para ello podemos configurar las credenciales directamente en el archivo config/mail.php

Espero que te haya gustado este tutorial, recuerda dejar tus comentarios y no olvides compartir el contenido.

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.

Lección anterior Cómo subir archivos con Laravel 5 Lección siguiente Crear un Thumbnail con Laravel 5 y Bootstrap