邮寄独特的邮件(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));
});
}
}
告诉我怎么想。
我一次向多个地址发送邮件。我形成一个视图,它被发送到地址。每封电子邮件都必须包含模型中所有用户的 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));
});
}
}