Laravel发送邮件报错

报错为Address in mailbox given [] does not comply with RFC 2822, 3.6.2.

发送邮件代码如下

    Mail::send('mail', ['email' => $email, 'vcode' => $vcode], function ($message) use ($email) {
        $message->to($email)->from(env('MAIL_USERNAME'))->subject('安全验证邮件');
    });

请问一下这是什么原因啊?

阅读 12.1k
2 个回答

错误所在代码:

/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php
    private function _assertValidAddress($address)
    {      
    
        if (preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D',
            $address)) {
            throw new Swift_RfcComplianceException(
                'Address in mailbox given ['.$address.
                '] does not comply with RFC 2822, 3.6.2.'
                );
        }
    }

首先,看看你的 $address 是不是为空。

在不为空的前提下,在考虑是否是规范问题。RFC2822,3.6.2 的规范如下:

from 字段由字段名 "From" 和一个冒号,一级一个或多个邮箱列表组成。

因此,这是不合法的:

'example@qq.com'

这才是合法的:

'"From:" example@qq.com'

查看一下,$emailenv('MAIL_USERNAME') 是不是有值,还是为 null

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题