He estado leyendo de la documentación sobre la nueva característica de laravel la verificación de correo electrónico. ¿Dónde puedo ubicar la plantilla de correo electrónico que se envía al usuario? No se muestra aquí: https://laravel.com/docs/5.7/verification # after-verifying-emails

7
Renzchler 8 sep. 2018 a las 06:59

4 respuestas

La mejor respuesta

En realidad, no usan ninguna hoja o plantilla, crean una notificación y escriben un código en la notificación.

1
Sachin Aghera 8 sep. 2018 a las 04:42

Laravel utiliza este método de clase de notificación VerifyEmail para enviar correo electrónico:

public function toMail($notifiable)
{
    if (static::$toMailCallback) {
        return call_user_func(static::$toMailCallback, $notifiable);
    }
    return (new MailMessage)
        ->subject(Lang::getFromJson('Verify Email Address'))
        ->line(Lang::getFromJson('Please click the button below to verify your email address.'))
        ->action(
            Lang::getFromJson('Verify Email Address'),
            $this->verificationUrl($notifiable)
        )
        ->line(Lang::getFromJson('If you did not create an account, no further action is required.'));
}

Método en código fuente.

Si desea utilizar su propia plantilla de correo electrónico, puede ampliar la clase de notificación base.

1) Crear en el archivo app/Notifications/ VerifyEmail.php

<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Lang;
use Illuminate\Auth\Notifications\VerifyEmail as VerifyEmailBase;

class VerifyEmail extends VerifyEmailBase
{
//    use Queueable;

    // change as you want
    public function toMail($notifiable)
    {
        if (static::$toMailCallback) {
            return call_user_func(static::$toMailCallback, $notifiable);
        }
        return (new MailMessage)
            ->subject(Lang::getFromJson('Verify Email Address'))
            ->line(Lang::getFromJson('Please click the button below to verify your email address.'))
            ->action(
                Lang::getFromJson('Verify Email Address'),
                $this->verificationUrl($notifiable)
            )
            ->line(Lang::getFromJson('If you did not create an account, no further action is required.'));
    }
}

2) Agregar al modelo de usuario:

use App\Notifications\VerifyEmail;

Y

/**
 * Send the email verification notification.
 *
 * @return void
 */
public function sendEmailVerificationNotification()
{
    $this->notify(new VerifyEmail); // my notification
}

Además, si necesita una plantilla de hoja:

laravel generará todas las vistas de verificación de correo electrónico necesarias cuando se ejecuta el comando make:auth. Esta vista se coloca en resources/views/auth/verify.blade.php. Eres libre de personalizar esta vista según sea necesario para su aplicación.

Fuente.

20
Илья Зеленько 24 oct. 2018 a las 08:51

Además, si desea traducir el correo estándar VerifyEmail (o otro donde use Lang :: fromJson (...)), necesita crear un nuevo archivo json en resources / lang / y asígnele el nombre ru.json, por ejemplo. Puede contener (recursos / lang / ru.json) el texto a continuación y debe ser válido.

{
  "Verify Email Address" : "Подтверждение email адреса"
}
1
kotoFF 28 oct. 2018 a las 20:29

Si una notificación admite el envío como un correo electrónico, debe definir un método toMail en la clase de notificación. Este método recibirá una entidad de notificación de $ y debería devolver una instancia de Illuminate \ Notificaciones \ Mensajes \ MailMessage. Los mensajes de correo pueden contener líneas de texto, así como una "llamada a la acción".

/**
 * Get the mail representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
public function toMail($notifiable)
{
    $url = url('/invoice/'.$this->invoice->id);

    return (new MailMessage)
                ->greeting('Hello!')
                ->line('One of your invoices has been paid!')
                ->action('View Invoice', $url)
                ->line('Thank you for using our application!');
}

Puede usar el generador de correo electrónico laravel como se documenta aquí: https://laravel.com /docs/5.8/notifications#mail-notifications. Laravel se encargará de la vista del correo electrónico.

-1
scre_www 21 abr. 2019 a las 12:13