0

当我替换sendqueue发送电子邮件时出现错误。这是我的代码:

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

4

2 回答 2

0

考虑到您使用的所有电子邮件都是有效的,我的猜测是它发生是因为您在 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) {

其次,在这里阅读参考和 foreach

于 2013-09-11T06:42:03.990 回答
0

我遇到了同样的问题,并通过按值传递所有数据来解决它。顺便说一句,建议只将值传递给排队的闭包,以避免意外的序列化行为。

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

    Mail::queue(
        'emails.newsletter',
        $data,
        function($message) use ($em) {
            $message->to($em)->subject('Newsletter | Bla Bla');
        }
    );   
}
于 2015-04-20T20:09:25.757 回答