邮寄独特的邮件(Laravel)

Mailing unique mails (Laravel)

告诉我怎么想。

我一次向多个地址发送邮件。我形成一个视图,它被发送到地址。每封电子邮件都必须包含模型中所有用户的 select 个唯一用户名。因此,每个用户都应该有自己的视图(带有他们的名字)。

问题是 - 如何为邮寄列表中的每封电子邮件创建一个独特的视图?

我不能这样写,因为所有用户都会收到包含所有用户名列表的同一封电子邮件:

$foreach ($users as $user)
{{ $user->name }}
@endforeach 

以及如何让每个用户在信中得到他们的名字的结果?

您需要为每个用户单独发送电子邮件,将用户数据传递给您创建的可邮寄 class。

<?php

namespace App\Mail;

use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class MyCustomUserMail extends Mailable
{
    use Queueable, SerializesModels;

    public $user;

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

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

在您的自定义视图中:

{{ $user->name }}

正在发送电子邮件:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Mail\MyCustomUserMail;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class UserController extends Controller
{
    public function doSomething()
    {
        $users = User::all();

        $users->each(function ($user) {
            Mail::to($user->email)->send(new MyCustomUserMail($user));
        });
    }
}