Enviando correos electrónicos con Laravel 4 y Gmail

El envío de correos electrónicos es crucial para cualquier aplicación web. Por lo general, se envía un correo electrónico para notificar al usuario sobre algún tipo de actividad que ha tenido lugar en el sitio, por ejemplo, como cuando se han realizado actualizaciones o cuando se han encontrado nuevos amigos. En este breve tutorial, le mostraré cómo enviar correos electrónicos con Gmail rápidamente desde una aplicación de muestra de Laravel al ampliar la funcionalidad que incorporamos en mi último tutorial, Autenticación con Laravel 4.

Entonces, tomaremos esa aplicación de autenticación (puede descargar el código fuente del tutorial anterior en Github para darle un punto de partida) que finalizamos la última vez y agregar una nueva función para que cada vez que un usuario se registre en el sitio, Les enviaremos un correo electrónico de confirmación, dándoles la bienvenida a la aplicación.!


Configuración de correo

Antes de que podamos enviar correos electrónicos con Laravel 4 necesitamos configurar el app / config / mail.php expediente. En este archivo podemos configurar las siguientes opciones:

Opción Descripción
conductor El controlador de correo que le gustaría usar. De forma predeterminada, está configurado en SMTP, pero también puede cambiarlo para usar la función de correo PHPs o Sendmail en su lugar.
anfitrión Esta es la dirección del host de su servidor SMTP.
Puerto Tu puerto SMTPs.
desde Esto le permite configurar el campo desde en su correo electrónico, para que todos los correos electrónicos se envíen desde la misma dirección.
cifrado Este es el protocolo de cifrado que se utilizará cada vez que se envíen correos electrónicos..
nombre de usuario Este es tu nombre de usuario SMTP.
contraseña Esta es tu contraseña SMTP.
enviar correo Esta es la ruta a donde se puede encontrar Sendmail en el servidor, cuando se usa el controlador de sendmail.
pretender Cuando se establece en cierto, los correos electrónicos se registrarán en un archivo de registro, en lugar de enviar un mensaje de correo electrónico real.

Enviando correo con Gmail

Para este tutorial usaré Gmail para enviar mis mensajes de correo electrónico, ya que es muy simple de usar. Todo lo que necesita para enviar correo con Gmail es tener una cuenta de Gmail activa, con un nombre de usuario y contraseña. Te proporcionaré todo lo demás. Editemos nuestro app / config / mail.php archivo para ver algo como esto (quité los comentarios para hacer el código más compacto):

 return array ('driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => array ('address' => 'authapp @ awesomeauthapp. com ',' name '=>' Awesome Laravel 4 Auth App '),' encryption '=>' tls ',' username '=>' your_gmail_username ',' password '=>' your_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' fingir '=> falso,);

Aquí he dejado el conductor ajustado a smtp. Puse el anfitrión usar smtp.gmail.com que es el servidor SMTP de Gmail. Puse el Puerto a 587, la desde a una dirección de correo electrónico falsa que suena adecuada para nuestra aplicación. Salí de la cifrado ajustado a tls y finalmente querrás ingresar tu propio Gmail nombre de usuario y contraseña por tu cuenta y vete pretender ajustado a falso.


Enviando correo

Código de ejemplo

Para esta aplicación, siempre que un usuario se registre con éxito, queremos enviarle un correo electrónico de bienvenida al sitio. El envío de correos electrónicos con Laravel se realiza mediante el uso de la Mail :: enviar () método. Aquí hay un pequeño fragmento de código, por ejemplo:

 Mail :: send ('folder.view', $ data, function ($ message) $ message-> to ('registered-user @ gmail. Com', 'Jon Doe') -> subject ('Welcome to the Laravel 4 Auth App! '););

El primer argumento es el archivo de vista que nos gustaría usar para dar formato a nuestro mensaje de correo electrónico. El segundo argumento es cualquier dato que nos gustaría pasar a ese archivo de vista. El tercer argumento es un cierre que acepta un $ mensaje objeto que podemos usar para decirle al remitente a quién le estamos enviando el correo electrónico y cuál será el tema de este correo electrónico. En este cierre, también puede especificar otras opciones como archivos adjuntos, etc. A continuación, enviará el correo electrónico al usuario.

Bastante facil derecha?

Enviar correos electrónicos después de un registro exitoso

Ahora modifiquemos nuestro Controlador de usuarioses postCreate () Acción y tome lo que hemos aprendido sobre el envío de correos electrónicos para enviar un mensaje de bienvenida a nuestros usuarios, siempre que se registren para la aplicación..

Dentro de nuestro postCreate () comportamiento Si declaración, donde verificamos si la validación ha pasado, justo después de guardar el usuario en la base de datos, agreguemos el siguiente código:

 if ($ validator-> pass ()) $ user = new User; $ user-> firstname = Input :: get ('firstname'); $ user-> lastname = Input :: get ('lastname'); $ usuario-> correo electrónico = Entrada :: obtener ('correo electrónico'); $ user-> password = Hash :: make (Input :: get ('password')); $ usuario-> guardar (); Mail :: send ('users.mails.welcome', array ('firstname' => Input :: get ('firstname')), función ($ mensaje) $ mensaje-> a (Input :: get ('email '), Input :: get (' firstname '). ". Input :: get (' lastname ')) -> subject (' Welcome to the Laravel 4 Auth App! ');); Return Redirect :: to ( 'users / login') -> with ('message', 'Gracias por registrarse!'); else return Redirect :: to ('users / register') -> with ('message', 'Ocurrieron los siguientes errores ') -> withErrors ($ validator) -> withInput ();

Aquí hemos llamado al Mail :: enviar () Método y le dijo que use una users.mails.welcome ver archivo. Luego pasamos una matriz como los datos que deberían estar disponibles dentro del archivo de vista, en este caso, simplemente enviamos el nombre de los usuarios, usando el Entrada :: obtener ('nombre de pila') método. A continuación, creamos nuestro cierre y configuramos esto para enviar el correo electrónico a la dirección de correo electrónico del usuario. También establecemos el nombre usando el nombre y apellido del usuario del formulario. Por último, le damos a este tema un tema bastante genérico (puede usar el tema que desee) para que el usuario sepa de qué se trata todo esto..

Creación del archivo de vista de correo electrónico

Ahora necesitamos crear nuestro Bienvenido archivo de vista de correo electrónico. Debajo aplicación / vistas / usuarios crear una nueva carpeta llamada correos y dentro de ella crea un nuevo archivo llamado bienvenido.blade.php y añadir en el siguiente código:

 

Hola, $ nombre de pila!

Nos gustaría darle la bienvenida personalmente a la aplicación de autenticación Laravel 4. Gracias por registrarte!

En este archivo de vista solo tenemos un HTML básico, usando el $ nombre de pila variable que pasamos como datos de nuestro controlador a la vista, dando la bienvenida al usuario a la aplicación. No hay mucho que hacer, puedes usar tus archivos de vista para correos electrónicos como lo haces para cualquier otra vista.

Vamos a probarlo

Asegúrese de iniciar su servidor web utilizando servicio php artesanal y podemos visitar localhost: 8000 / usuarios / registro, luego crea un nuevo usuario:


... y luego verifique la cuenta de correo electrónico de ese usuario para verificar que el correo electrónico se envió correctamente:


¡Perfecto! Nuestro correo electrónico fue enviado.


En conclusión

Y eso es todo lo que hay para enviar mensajes de correo electrónico con Laravel 4 y Gmail. Por supuesto, puede personalizar sus mensajes de correo electrónico tanto como desee para que el correo sea más atractivo..

Ahora, esta es la forma más básica de enviar correo con Laravel y puede ralentizar su aplicación, ya que envía el correo electrónico, pero tiene otras opciones. Continuará usando la clase de correo de Laravel, pero en lugar de enviarla de inmediato, puede hacer una cola de sus correos electrónicos para que se envíen en segundo plano, sin que los usuarios esperen. Pero este tema es mejor guardado para un artículo separado.

Para obtener más información sobre el envío de correo electrónico con Laravel, consulte la documentación en línea. Gracias por leer.