Laravel mail

Laravel permite enviar correos eletrónicos con una fácil configuración y creando un controlador mailable, poder utilizarlo en cualquier componente o controlador del proyecto.

Por ejemplo, notificar por email el registro de un usuario o aprobaciónes de comentarios.

Índice
  1. Fichero de configuración mail
  2. Crear mailable laravel
  3. Crear vista mail
  4. Utilizar mailable en el controlador

Fichero de configuración mail

En el fichero .env hay que rellenar los parámetros de configuración del buzón de correo.

MAIL_MAILER=smtp
MAIL_HOST=smtp.servidor.com
MAIL_PORT=numerodepuerto
MAIL_USERNAME=usuariodeemail
MAIL_PASSWORD=passworddeemail
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="Nombre a mostrar"

Crear mailable laravel

Lo siguiente que hay que hacer es crear un mailable o controlador que se encarge de gestionar el envio por email. Para ello utlizar make:mail seguido del nombre del mailable.

php artisan make:mail NombreMailable

Este comando crea el controlador especial para email en la carpeta Mail

app\Mail\NombreMailable.php

En este fichero creado se configura en el método build, la dirección de la vista donde contiene el cuerpo de email.

En este ejemplo la vista está en una carpeta creada y llamada mail. Además se puede indicar el Asunto del email añadiendo el método subject

->subjet('Curso aprobado');

public function build()
{
  return $this->view('mail.nombre-mailable')->subject('Asundo del email');
}

Constructor con parámetros

Para hacer dimámico un email, se le pueden pasar parámetros a través de su constructor y guardando los valores en propiedades del propio controlador. Estas propiedades se pueden utilizar en la vista para mostrar información variada con la misma plantilla de email.

public $user;

public function __construct(User $user)
{
 $this->user= $user;
}

Crear vista mail

Crear una carpeta llamada mail y dentro crear el fichero al que se hace referencia en el controlador mailable.

resources\views\mail\nombre-mailable.blade.php

En este fichero se puede utlizar código html y estilos css para dar una buena apariencia al email

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>

 <style>
  h1{
   color:red;        }
 </style>

</head>
<body>
    <h1>Este es el titulo de correo</h1>
    <p>Contenido del email</p>
</body>
</html>

Utilizar variables en el email

Se puede utilizar las variables y propiedades disponibles en el controlador mailable haciendo referencia en el cuerpo del email

<p>El usuario {{$user->name}} ha sido registrado</p>

Utilizar mailable en el controlador

En el controlador donde se desea enviar email laravel, hay que importar al Facades\Mail y también el controlador mailable creado

use Illuminate\Support\Facades\Mail;
use App\Mail\NombreMailable;

Crear una nueva instancia del mailable creado NombreMailable.

Utilizando el Facades Mail utilizar el método To con la dirección del correo electrónico email, y después utlizar el método send con el parámetro de la nueva instancia

$mail = new NombreMailable();

Mail::to($email)->send($mail);

Crear instancia con parámetros

Para poder personalizar de forma dinámica el contenido del email, hay que pasarle parámetros al objeto instanciado, para así utlizar en el controlador mailable y mostrarlo en la vista del email.

Por ejemplo se le pasa la variable del usuario que contiene información del nombre, email, etc.

$mail = new NombreMailabe($user);

De esta forma es posible enviar un email en cualquier parte de la aplicación web.

Además los envíos de email se puede enviar con colas de tareas o jobs para evitar la espera que se produce al enviar un email. Ver como enviar un email con laravel jobs.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir