Cómo personalizar las plantillas de correo electrónico de notificación de Laravel 5/6

Cómo personalizar las plantillas de correo electrónico de notificación de Laravel 5/6

Muy bien, me encontré con este problema de configurar una plantilla de correo electrónico para mi Laravel 5.4 aplicaciones. Fue un correo electrónico de 'bienvenido', utilizando la plantilla de laravel predeterminada. El desafío era cambiar el encabezado y el pie de página de la plantilla.

Todos intentamos leer la documentación lo más rápido posible y si eso no funciona, después de 3 minutos completos de leer la documentación, cambiaríamos a StackOverflow, o Laracasts o cualquier otro foro, esperando 'Copiar y pegar' código listo.

Continuar…

Las cosas son fáciles si solo desea cambiar el mensaje de texto, y tiene muchos ejemplos sobre cómo hacerlo, utilizando los componentes de correo. Sin embargo, no encontré ninguna respuesta sobre cómo cambiar el encabezado y el pie de página predeterminado.

Componentes

Laravel 5.4 componentes de correo electrónico introducidos. Usted puede leer sobre ello aquí.



$ slot

Este sería un componente de alerta, que es básicamente una plantilla de cuchilla. Entonces el $ slot sería una variable/lugar para soltar su contenido de otra plantilla/componente.

@Component ('Alerta')
Gritos! Algo salió mal!
@endcomponent

Como eso. Esto haría


Gritos! Algo salió mal!

Publicar proveedor publicar

Inicialmente, Laravel usará sus componentes ocultos en el núcleo del marco, que puede exportar haciendo

Vendor artesanal de PHP: publicar--TAG = Laravel-Mail

Creará carpetas de correo y marcado dentro de sus recursos/vista/carpeta de proveedores. En el interior encontrarás componente como el diseño o el encabezado, etc.

Creación de notificación

Lo que quiere hacer es crear una notificación, evento o clase de correo para disparar un correo electrónico cuando sucede algo.

Decidí ir con una notificación. Al crear cualquier notificación (puede leer más sobre cómo crear una notificación a través de Artisan) obtendrá una clase como esta:

Aplicación de espacio de nombres \ notificaciones;
use iluminate \ bus \ queeable;
usar iluminado \ notificaciones \ notificación;
use iluminar \ contracts \ queue \ deberíaqueue;
use Illuminate \ Notifications \ Messages \ MailMessage;
clase registrada de usuarios extiende la notificación

usar queable;
/**
* Variable de clase indocumentada
*
* @var cadena
**/
público $ user;
/**
* Crear una nueva instancia de notificación.
*
* @return void
*/
función pública __construct ($ user)

$ this-> user = $ user;

/**
* Obtenga los canales de entrega de la notificación.
*
* @param mezclado $ notificable
* @@return array
*/
función pública a través de ($ notificable)

devolver ['Mail'];

/**
* Obtenga la representación del correo de la notificación.
*
* @param mezclado $ notificable
* @return \ iluminate \ notificaciones \ mensajes \ mailmessage
*/
Tomada de función pública ($ Notificable)

devolución (nuevo MailMessage)
-> De ('info@a veces-it-wont-work.com ',' admin ')
-> sujeto ('Bienvenido al portal')
-> Markdown ('correo.bienvenido.índice ', [' user '=> $ this-> user]);

/**
* Obtenga la representación de la matriz de la notificación.
*
* @param mezclado $ notificable
* @@return array
*/
Función pública ToArray ($ notificable)

devolver [
//
];

Aquí, preste atención al método de toma, así como al constructor de la clase porque le pasaremos un objeto. También tenga en cuenta que estamos usando

-> Markdown ('algunos.cuchilla.php ');

El siguiente paso es impulsar esta notificación para que funcione. En algún lugar de su registro de registro, es posible que desee llamar a esto (no entrar en cómo lo ejecutará, ya sea sincronizado o en cola ...). No olvide incluir el espacio de nombres de la notificación en la parte superior.

$ user = user :: create ([[
'Nombre' => $ Data ['Nombre'],
'correo electrónico' => $ data ['correo electrónico'],
'lastName' => $ data ['lastName'],
'Password' => bCrypt ($ data ['contraseña']),
]);
$ user-> notify (nuevo userregistered ($ user));

¿Por qué voy tan profundo?? Bueno, porque también quiero mostrarle cómo pasar sus datos a la plantilla de correo electrónico.

A continuación puedes ir a recursos/vistas/correo/bienvenido/índice.cuchilla.php (Puede ser cualquier carpeta y nombre de archivo que desee) y pegar esto:

@Component ('Mail :: Diseño')
-encabezado-
@Slot ('Header')
@Component ('Mail :: Header', ['url' => config ('aplicación.url ')])
Título de encabezado
@endcomponent
@endslot
-- Cuerpo --
Este es nuestro mensaje principal $ user
-subcopy-
@isset ($ subcopy)
@slot ('subcopy')
@Component ('Mail :: Subcopy')
$ subcopy
@endcomponent
@endslot
@endisset
-pie de página-
@Slot ('pie de página')
@Component ('Mail :: pie de página')
© date ('y') config ('app.nombre') . Súper pie!
@endcomponent
@endslot
@endcomponent

Ahora puede agregar fácilmente cualquier imagen a su encabezado o cambiar el enlace dentro del pie de página, etc.

Espero que esto ayude.

Sigueme en Twitter
Agrégame en LinkedIn