Laravel 5.5中包含用户名的邮件

3

我觉得我在这里错过了一些非常简单的东西,但是我有一个像这样的脚本:

\Mail::to( User::all() )
             ->send( new NotificationEmail($notification) );

class NotificationEmail extends Mailable {
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @param Notification $notification
     *
     */
    public function __construct( Notification $notification ) {
        $this->notification = $notification;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build() {
        $notification = $this->notification;

        return $this
            ->from( [
                'address' => \env( 'MAIL_DEFAULT_SENDER' ),
                'name'    => \env( 'APP_NAME' )
            ] )
            ->view( 'email.notification.ready' );
    }
}

现在,我希望电子邮件的开头能够像这样:

亲爱的{用户的名字}, 但是我不知道如何获取将收到该电子邮件的用户的名字。有没有办法找出来呢?


{btsdaf} - ljubadr
{btsdaf} - user936965
{btsdaf} - ljubadr
{btsdaf} - LorenzoBerti
{btsdaf} - Ohgodwhy
{btsdaf} - user936965
1个回答

0

向所有用户发送电子邮件并不是推荐的方式,因为接收电子邮件的人可以看到所有收件人,并且他们会收到相同的消息,您无法自定义添加用户的名字。

您需要为每个用户创建单独的Mailable并将所有Mailable排队。单独向所有用户发送电子邮件是一项耗时的任务,需要工作人员在后台处理队列。

$users = User::all();
foreach ($users as $user) {
    Mail::to($user)->queue(new NotificationEmail($notification, $user));
}

现在您可以传递$user实例,用户的名字在视图中可用:

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

public function build() {
    $notification = $this->notification;

    return $this
        ->from( [
            'address' => \env( 'MAIL_DEFAULT_SENDER' ),
            'name'    => \env( 'APP_NAME' )
        ] )
        ->view( 'email.notification.ready' , [
            'user' => $this->user
        ]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接