Laravel Mail :: send () отправка нескольких адресов или адресов

Кажется, я не могу успешно отправить несколько адресов при использовании обратного вызова Mail::send() , но код работает, когда я укажу только одного получателя.

Я пробовал цепочку:

 // for example $emails = array("myemail1@email.com", "myemail2@email.com"); $input = Input::all(); Mail::send('emails.admin-company', array('body' => Input::get('email_body')), function($message) use ($emails, $input) { $message ->from('admin@admin.org', 'Administrator') ->subject('Admin Subject'); foreach ($emails as $email) { $message->to($email); } }); 

и передавая массив:

 // for example $emails = array("myemail1@email.com", "myemail2@email.com"); $input = Input::all(); Mail::send('emails.admin-company', array('body' => Input::get('email_body')), function($message) use ($emails, $input) { $message ->from('admin@admin.org', 'Administrator') ->subject('Admin Subject'); $message->to($emails); }); 

но ни один из них не работает, и я получаю сообщения об ошибках при возврате Mail :: failures (), var_dump () Mail :: failures () показывает адреса электронной почты, которые я пытался отправить, например:

 array(2) { [0]=> string(18) "myemail1@email.com" [1]=> string(18) "myemail2@email.com" } 

Очевидно, что что-то не так, я бы по достоинству оценил любую помощь, поскольку я не понимаю API: http://laravel.com/api/4.2/Illuminate/Mail/Message.html#method_to

Я понимаю, что могу поместить метод Mail::send() в цикле for / foreach и Mail::send() для каждого адреса электронной почты, но это не кажется мне оптимальным решением, я надеялся, что буду также иметь возможность ->bcc() ко всем адресам, когда все работает, чтобы получатели не увидели, кому еще отправляется почта.

Я протестировал его, используя следующий код:

 $emails = ['myoneemail@esomething.com', 'myother@esomething.com','myother2@esomething.com']; Mail::send('emails.welcome', [], function($message) use ($emails) { $message->to($emails)->subject('This is test e-mail'); }); var_dump( Mail:: failures()); exit; 

Результат – пустой массив для сбоев.

Но, конечно, вам нужно правильно настроить ваше app/config/mail.php . Поэтому сначала убедитесь, что вы можете отправлять электронную почту только одному пользователю, а затем тестировать свой код у многих пользователей.

Кроме того, используя этот простой код, ни одно из моих сообщений электронной почты не было доставлено на бесплатные почтовые учетные записи, я получил только электронные письма для входящих почтовых ящиков, которые у меня есть на моих платных хостинговых счетах, поэтому, вероятно, они были пойманы некоторыми фильтрами (это, может быть, простая тема / проблема с контентом, но Я упомянул об этом на всякий случай, если вы не получили некоторые электронные письма).

Если вы хотите отправлять электронные письма одновременно всем администраторам, вы можете сделать что-то вроде этого:

В файле .env добавьте все электронные письма как значения, разделенные запятыми:

 ADMIN_EMAILS=admin1@site.com,admin2@site.com,admin3@site.com 

поэтому, когда вы отправляете сообщение электронной почты, просто сделайте это (да! метод экземпляра сообщения для метода message to accept принимает массив):

Так,

 $to = explode(',', env('ADMIN_EMAILS')); 

а также…

 $message->to($to); 

теперь отправит почту всем администраторам.

принятый ответ больше не работает с laravel 5.3, потому что почтовая программа пытается получить доступ ->email и результаты в

ОшибкаException в строке Mailable.php 376: попытка получить свойство не объекта

рабочий код для laravel 5.3 таков:

 $users_temp = explode(',', 'first@example.com,second@example.com'); $users = []; foreach($users_temp as $key => $ut){ $ua = []; $ua['email'] = $ut; $ua['name'] = 'test'; $users[$key] = (object)$ua; } Mail::to($users)->send(new OrderAdminSendInvoice($o)); 

Это отлично работает – у меня есть доступ к объекту запроса и массиву электронной почты

  $emails = ['tester@blahdomain.com', 'anotheremail@blahdomian.com']; Mail::send('emails.lead', ['name' => $name, 'email' => $email, 'phone' => $phone], function ($message) use ($request, $emails) { $message->from('no-reply@yourdomain.com', 'Joe Smoe'); // $message->to( $request->input('email') ); $message->to( $emails); //Add a subject $message->subject("New Email From Your site"); }); 

он работает для меня отлично, если у вас есть строка, а затем просто взорвите ее в первую очередь.

$ emails = array ();

 Mail::send('emails.maintenance',$mail_params, function($message) use ($emails) { foreach ($emails as $email) { $message->to($email); } $message->subject('My Email'); });