Различный просмотр данных на основе получателей для писем Laravel при использовании нескольких получателей - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь отправить через 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, а только один.

Возможно ли это вообще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...