2013-09-11 1 views
0

У меня возникла ошибка при замене send на queue при отправке писем. Вот мой код:L4: Mail :: queue error Адрес в почтовом ящике указан [] не соответствует RFC 2822, 3.6.2

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

+0

убедитесь, что вы используете действующий адрес электронной почты –

ответ

0

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

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

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

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

function($message) use($em) { 

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

0

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

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

    Mail::queue(
     'emails.newsletter', 
     $data, 
     function($message) use ($em) { 
      $message->to($em)->subject('Newsletter | Bla Bla'); 
     } 
    ); 
} 
Смежные вопросы