L4: Mail::queue error Адрес в указанном почтовом ящике [] не соответствует RFC 2822, 3.6.2

У меня возникла ошибка при замене send на queue при отправке писем. Вот мой код:

foreach ($recs as $rec)
{
     $em = $rec->email;

      Mail::queue('emails.newsletter',$data,
              function($message) use(&$em) {
              $message->to($em)->subject('Newsletter | Bla Bla');
      });   
}

Мой почтовый драйвер — smtp, а хост — relay-hosting.secureserver.net от godaddy.

Он отлично работает, если я буду использовать Mail::send, а не Mail::queue


person Orvyl    schedule 11.09.2013    source источник
comment
убедитесь, что вы используете действующий адрес электронной почты   -  person    schedule 11.09.2013


Ответы (2)


Принимая во внимание, что все используемые вами электронные письма действительны, я предполагаю, что это происходит из-за того, что вы используете оператор & (ссылка) в foreach и впоследствии не отключаете его, ниже фрагмент из документов foreach php

 Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

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

Во-первых, я думаю, что вам вообще не нужна ссылка, поэтому просто удалите оператор &

function($message) use($em) {

Во-вторых, прочтите здесь References и foreach

person Gadoma    schedule 11.09.2013

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

foreach ($recs as $rec)
{
    $em = $rec->email;

    Mail::queue(
        'emails.newsletter',
        $data,
        function($message) use ($em) {
            $message->to($em)->subject('Newsletter | Bla Bla');
        }
    );   
}
person Aleksei Akireikin    schedule 20.04.2015