使用多个收件人时,基于Laravel电子邮件的收件人的视图数据不同

时间:2018-09-03 12:12:32

标签: php laravel laravel-5 laravel-5.6 laravel-mail


我正在尝试通过Laravel发送一封包含多个收件人的电子邮件,但根据收件人的查看数据会有所不同。

例如,我需要显示接收电子邮件的用户的名字,而不是全部。

这是代码:

protected $hints = [
    ['game_hint_2', 'game_hint_3'],
    ['game_hint_4'],
    ['game_hint_5', 'game_hint_6'],
    ['game_hint_7', 'game_hint_8'],
    ['game_hint_9', 'game_hint_10']
];

$users = $this->users->query()->whereConfirmed(true)->get();

$emails = $users->pluck('email');

Mail::bcc($users->pluck('email'))->send(
    new GameHintsEmail($hints[$dayIndex])
);

如何为每个收件人指定查看数据?

基本上,对于每个收件人,都需要根据用户的电子邮件填充视图中的替换标签,以实现类似于Hello *firstname*!

的结果

这是可邮寄的:

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

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

    return $this
        ->view('emails.hints.game_hint')
        ->text('emails.hints.game_hint_plain')
        ->with($data)
        ->subject($data['subject']);
}

protected function __buildViewData()
{
    $data = [];

    $data['subject'] = "Game Hints! Name 2018 Competition";
    $data['hints'] = $this->gameHints;

    if ($this->bcc && !empty($this->bcc)) {
        $data['userEmail'] = $this->getUserEmail();
    }

    return $data;
}

protected function getUserEmail()
{
    if ($this->to && !empty($this->to)) {
        return $this->bcc[0]['address'];
    }
}

getUserEmail仅允许我获取第一个收件人数据,但这不是我想要的。

目标是不要使用多个Mail调用,而只能使用一个。

有可能吗?

0 个答案:

没有答案