【问题标题】:Laravel Swift Mailer Exception for bad email address?错误的电子邮件地址的 Laravel Swift Mailer 异常?
【发布时间】:2014-08-11 20:12:33
【问题描述】:

我有一个超级奇怪的问题,我会在事后详细解释为什么它很奇怪......

代码...

Mail::send('emails.cron.loggedinusers', $data, function($message){

    // Get Admin user emails
    $adminUserEmails = DB::table('users')->where('user_role', 'admin')->lists('email');

    // Build nice comma separated list of Admin Emails addresses  
    // and also wrap each email in quotes
    $filter = function($adminUserEmails){ return "'$adminUserEmails'"; };
    $toEmails = array_map($filter, $adminUserEmails);
    $toEmails = implode(', ', array_values($toEmails));
    print_r($toEmails);

    // Send email to Admins Only
    $message->from('one@email.com', 'Jason');
    $message->to('one@email.com')->cc($toEmails);
    $message->subject('[TIMECLOCK ALERT] Users are logged into the Timeclock!');
});

当我运行上面的代码从数据库中获取 4 个电子邮件地址并尝试通过电子邮件发送给他们时,我收到了这个讨厌的错误消息...

请记住,我已更改此处显示的实际电子邮件值以保护身份,但脚本中的真实电子邮件都是合法电子邮件...

Swift_RfcComplianceException
Address in mailbox given ['one@email.com', 'two@email.com',  
'three@email.com', 'four@email.com']   
does not comply with RFC 2822, 3.6.2.

现在,如果我将变量 $toEmails 替换为实际的字符串文本... $message->to('one@email.com')->cc('one@email.com', 'two@email.com', 'three@email.com', 'four@email.com');

然后它会发送没有问题且没有错误消息的电子邮件!

这对我来说很奇怪很奇怪,因为我实际上是在将 $toEmails 变量打印到屏幕上并将其输出复制/粘贴到上面的电子邮件代码中,并且它发送得很好,但是只要我使用变量而不是文本字符串,我在上面收到了那个可怕的错误消息。我无法理解为什么会这样做,如果您有任何想法,请与我分享???

【问题讨论】:

  • 我认为这是同样的问题。 stackoverflow.com/questions/6508033/…
  • @ZawMyoHtet 我一眼就知道它们看起来很相似......不同之处在于它们没有将电子邮件地址传递到电子邮件函数中,也没有使其成为全球性的,我的代码可以访问到电子邮件,错误甚至打印出列表中的电子邮件地址......这是一个非常奇怪的问题,它如何作为字符串而不是作为变量工作

标签: php email laravel swiftmailer


【解决方案1】:

您收到的错误消息在这里有点误导,也许值得报告错误。 RFC 2822, 3.6.2. 是关于发起者字段,而 tocc 不是这样的发起者字段,from 是。

但是消息的另一部分确切地说明了问题所在:

给定 ['one@email.com', 'two@email.com', 'three@email.com', 'four@email.com'] 的邮箱中的地址不符合...

这是正确的。它不是邮箱,而是邮箱列表。 Swift mailer 需要一个邮箱,而不是邮箱列表。这就是信息告诉你的。您未能在此处提供邮箱。您可能认为您可以在此处提供邮箱列表,但显然这给了您例外,所以这不起作用。

您已经找到了解决方案,方法是不提供列表,而是一个接一个地添加一个邮箱,每个参数一个。

这里更多的是一个问题,$message 类的接口期望什么。而且由于您没有注意到错误消息的误导部分,我猜您并没有被那部分误导。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2011-09-24
    • 2010-12-02
    • 2011-01-30
    相关资源
    最近更新 更多