gpt4 book ai didi

Laravel 在 Mailable 中使用 MailMessage

转载 作者:行者123 更新时间:2023-12-04 18:56:36 25 4
gpt4 key购买 nike

我试图在我的用户注册时向他们发送一封电子邮件,我创建了一个可邮寄的类:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class WelcomeMail extends Mailable
{
use Queueable, SerializesModels;

public $user;
public $message;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($user)
{
$this->user = $user;

$this->message = (new MailMessage)
->greeting('Bonjour '.$user->name)
->line('Nous vous remercions de votre inscription.')
->line('Pour rappel voici vos informations :')
->line('Mail: '.$user->email)
->line('Password: '.$user->password);
}

/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('message')->with([
'slot' => $this->message
]);


}

但是如果我使用自定义模板我必须做所有的css和Html,我看到忘记密码的电子邮件使用了MailMessage,并且所有模板都已经使用MailMessage模板制作了。

有什么方法可以让我使用相同的模板或直接使用我的自定义内容创建 MailMessage 模板?

谢谢。

最佳答案

您正在混合 2 个独立的 Laravel 概念,通知和邮件程序。通知可以是邮件程序,但邮件程序不能是通知。
MailMessage class 是通知消息,但不能是 Mailable 的消息.发送 MailMessage邮寄者您应该扩展 Notification类(class):

<?php

namespace App\Notifications;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Bus\Queueable;

class WelcomeNotification extends Notification implements ShouldQueue
{
use Queueable, SerializesModels;

public $user;

public function __construct($user)
{
// The $notifiable is already a User instance so not really necessary to pass it here
$this->user = $user;
}

public function via($notifiable)
{
return ['mail'];
}

public function toMail($notifiable)
{

return (new MailMessage)
->greeting('Bonjour '.$this->user->name)
->line('Nous vous remercions de votre inscription.')
->line('Pour rappel voici vos informations :')
->line('Mail: '.$this->user->email)
->line('Password: '.$this->user->password);
}

}

另见 Laravel's ResetPassword notification作为例子。

向用户发送通知:
$user->notify(new WelcomeNotification($user));

通过这种方式,您可以使用默认邮件通知模板创建通用邮件消息。

关于Laravel 在 Mailable 中使用 MailMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51179671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com