2017-02-16 19 views
0

Рассмотрите этот образец кода, который принимает массив адресов и отправляет каждому из них электронное письмо с использованием функции почты.Laravel 5.4 Почтовые рассылки, добавляющие адреса электронной почты вместе

//In my controller 

$email = new EmailToWinners($sender_name, $letter); 
foreach ($recipients as $recipient){ 
     Mail::to($recipient)->send($email); 
} 

//In my App\Mail\EmailToWinner 

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

Письма все отправляются отлично, но когда я тестировал это, я заметил, что он складывает электронные письма вверх.

Так что я получаю это в журналах.

[2017-02-16 15:58:59] local.DEBUG: Message-ID: <[email protected]> 
Date: Thu, 16 Feb 2017 15:58:59 +0000 
Subject: Email To Winner 
From: Example Dev <[email protected]> 
To: [email protected] 
MIME-Version: 1.0 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

[2017-02-16 15:58:59] local.DEBUG: Message-ID: <[email protected]> 
Date: Thu, 16 Feb 2017 15:58:59 +0000 
Subject: Email To Winner 
From: Example Dev <[email protected]> 
To: [email protected], [email protected] 
MIME-Version: 1.0 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

[2017-02-16 15:58:59] local.DEBUG: Message-ID: <[email protected]> 
Date: Thu, 16 Feb 2017 15:58:59 +0000 
Subject: Email To Winner 
From: Example Dev <[email protected]> 
To: [email protected], [email protected], [email protected] 
MIME-Version: 1.0 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

Если вы посмотрите на электронные письма. Первое письмо показывает [email protected]

Второй показывает [email protected], [email protected]

Третий показывает [email protected], [email protected], [email protected]

Итак, первый человек получает 3 письма.

Что я делаю неправильно?

+0

Что вы имеете в виду при укладке электронных писем up'? – Jerodev

+0

Посмотрите на заголовки электронной почты из журнала. – ahackney

+0

Если вы снова посмотрите на свой код, проблема должна заключаться в том, что вы создаете почтовый объект только один раз, а затем отправляете письмо пользователю, затем добавляете другое «на», другое 'to' и т. Д., Потому что его всегда один и тот же объект, поэтому вам нужно сгенерировать его в 'foreach', как и в моем комментарии, тогда он должен работать – nameless

ответ

2

Вы можете перейти к to методе коллекции пользователей:

Mail::to($recipients)->send(new EmailToWinners()); 

От Lavavel Mail Docs:

методы принимает адрес электронной почты, экземпляр пользователя или коллекцию пользователи. Если вы передаете объект или коллекцию объектов, почтовая программа будет автоматически использовать свои свойства электронной почты и имени при настройке получателей электронной почты, поэтому убедитесь, что эти атрибуты доступны на ваших объектах.

+0

Но я не хочу отправлять 1 письмо на 10 человек, я хочу отправить 10 писем. – ahackney

+0

@ahackney Да, он должен отправить 10 писем 10 пользователям.Из документов: если вы передаете объект или коллекцию объектов, почтовая программа будет автоматически использовать свои свойства электронной почты и имени при настройке получателей электронной почты, поэтому убедитесь, что эти атрибуты доступны на ваших объектах. –

+0

Я протестировал его. Он отправил 1 письмо с 3 полями. – ahackney

1

Я думаю, вам нужно создать новый объект электронной почты для каждого получателя, подобного этому.

foreach ($recipients as $recipient){ 
     Mail::to('$recipient')->send(new EmailToWinners($sender_name, $letter)); 
} 
+0

Пробовал это, и он отправляет 1 письмо всем им. Но я бы хотел 1 адрес электронной почты на адрес. 1 email = 1 победитель – ahackney

+0

@ahackney Что вы имеете в виду «1 адрес электронной почты на адрес», или какая разница с 1 электронной почтой для всех из них? Вы хотите предоставлять разные материалы в каждой почте? для меня это 'foreach ($ newsletterMailAdresses as $ mailAdress) { Mail :: to ($ mailAdress) -> отправить (новый NewsletterMail ($ newsletterText, $ mailAdress, $ sellerID)); } 'отправляет одну почту каждому пользователю, подписавшему информационный бюллетень – nameless

+0

. Я буду предоставлять разные материалы каждому пользователю. Но на данный момент это тот же адрес электронной почты. Основная проблема заключается в том, что в моем примере отправляется пользователь [email protected] 3 письма, [email protected] 2 письма, [email protected] 1 электронная почта. – ahackney

 Смежные вопросы

  • Нет связанных вопросов^_^