【发布时间】: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