Como usar variables en el view de un email en Laravel [SOLUCIONADO]

Gestión de Variables en Templates de Email con Laravel

En el ámbito del desarrollo web, es común que necesitemos enviar correos electrónicos que contengan información dinámica; Laravel facilita esta tarea ofreciendo un sistema de plantillas eficiente y sencillo de utilizar. Este artículo proporcionará una guía detallada sobre la inserción y manejo de variables en las vistas de correos electrónicos utilizando el popular framework PHP Laravel.

Definiendo Vistas de Correo Electrónico

Una vista de correo en Laravel no es más que una plantilla que define el contenido del correo electrónico. Laravel usa Blade, su motor de plantillas, para que la generación de correos sea más expresiva y fácil de entender. Para empezar, debemos tener una vista de Blade que se utilizará como plantilla de correo. Por ejemplo, si quisiéramos enviar un correo de bienvenida, crearíamos la siguiente vista:

<!-- resources/views/emails/welcome.blade.php -->
<html>
    <body>
        <p>¡Hola {{ $name }}!</p>
        <p>Bienvenido a nuestro sitio web.</p>
    </body>
</html>

Para utilizar esta vista como base para un correo electrónico, primero definiremos una mailable class utilizando el comando de Artisan:

php artisan make:mail WelcomeEmail

Dentro de la clase generada, especificamos la vista y las variables que deseamos pasar a la misma:

<?php

namespace AppMail;

use IlluminateMailMailable;

class WelcomeEmail extends Mailable
{
    public $name;

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

    public function build()
    {
        return $this->view('emails.welcome');
    }
}
?>


Envío de Correos Electrónicos con Datos Dinámicos

Una vez tenemos nuestra mailable class, podemos pasar variables a la misma desde nuestro controlador. El siguiente ejemplo muestra cómo enviar un correo con el nombre del usuario como dato dinámico:

<?php 

use AppMailWelcomeEmail;

...

public function sendWelcomeEmail(User $user)
{
    Mail::to($user->email)->send(new WelcomeEmail($user->name));
}

?>

Es importante mencionar que al crear instancias de la mailable class, Laravel automáticamente proporciona las propiedades públicas de la clase a la vista. Esto significa que la variable $name estará disponible en la plantilla Blade como se muestra en el ejemplo de la vista de correo electrónica inicial.

Uso Avanzado de Variables

Laravel no solo permite pasar variables simples como strings o números, sino que también puedes pasar arrays o incluso colecciones de Eloquent a tus vistas de correo. Veamos cómo se puede hacer esto:

Supongamos que queremos enviar un correo con una lista de productos a un usuario. Primero, pasaríamos la colección de productos mediante la construcción de nuestra clase de correo:

<?php

namespace AppMail;

use IlluminateMailMailable;
use IlluminateDatabaseEloquentCollection;

class ProductsEmail extends Mailable
{
    public $products;

    public function __construct(Collection $products)
    {
        $this->products = $products;
    }

    public function build()
    {
        return $this->view('emails.products');
    }
}
?>

Luego, en la vista de correo, podríamos iterar sobre la colección y mostrar cada producto:

<!-- resources/views/emails/products.blade.php -->
<html>
    <body>
        <h2>Lista de Productos</h2>
        <ul>
            @foreach ($products as $product)
                <li>{{ $product->name }} - {{ $product->price }}</li>
            @endforeach
        </ul>
    </body>
</html>


Personalización del Correo Electrónico

No podemos olvidar que Laravel ofrece múltiples maneras de personalizar el correo, desde el asunto, hasta los encabezados y pies de página. Utilizando métodos encadenados en nuestra mailable class, podemos especificar cada aspecto importante de nuestro correo electrónico:

<?php

...

public function build()
{
    return $this
        ->from('[email protected]', 'Example')
        ->subject('Your Personalized Subject Here')
        ->view('emails.products');
}
?>

La flexibilidad que ofrece Laravel al manejar variables y personalizar los correos, hace posible crear experiencias altamente personalizadas para los usuarios, incrementando así la efectividad de la comunicación a través de este medio.

Consideraciones de Seguridad y Privacidad

Al pasar información a través de correos electrónicos, siempre debemos ser conscientes de las implicaciones de seguridad y privacidad. Asegúrate de no exponer datos sensibles en los correos. Laravel ofrece herramientas para encriptar los correos, pero la responsabilidad última de la seguridad de la información es del desarrollador.

Además, el uso de la funcionalidad de notifications de Laravel puede proporcionar un control adicional sobre el contenido y la entrega de los emails, manteniendo una organización más clara del código y una mejor separación de responsabilidades dentro de la aplicación.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad