当电子邮件保存在变量中时,邮箱地址不符合RFC 2822,3.6.2规范。

54

我有一个正确的电子邮件地址。我已经复制了它,但当我发送时,我收到以下错误:

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

为什么我要使用Laravel(Swift Mailer)发送电子邮件:

$email = email@address.com

然后当我发送它时,会抛出错误。

但如果我直接使用该字符串,则可以发送它。

这是代码块:

 Mail::send('emails.activation', $data, function($message){
            $message->to($email)->subject($subject);
        });
                ->with('title', "Registered Successfully.");

$email$subject 超出了作用域,不是吗? - Anthony Sterling
在调用Mail::send之前,我已经定义了它们,但如果这意味着超出范围,那么我应该怎么办? - user3077503
5
使用 use 关键字。 Mail::send('emails.activation', $data, function($message) use ($email, $subject) { .... :) - Anthony Sterling
请用一段相对完整的代码来回答吗?如果成功的话,我会标记为答案。 - user3077503
同样的问题也会在有时候输入错误的电子邮件地址时出现(即没有可用的abcd@abcd.abc)。 - bharat
显示剩余2条评论
18个回答

1
当收件人电子邮件为空时会出现这种情况。
尝试打印$email以检查它是否有值。

0

试试这个。

Mail::send('emails.activation', $data, function ($message) use ($email, $subject) {
    $message->to($email)->subject($subject);
})->with('title', "Registered Successfully.");

0
我会在这里为初学者解释一下。 在回调函数之外声明的任何变量都超出了该回调函数的范围。因此,如果您想在回调函数内使用这样的变量,必须将它们放在use()中。 就像问题中所述:$email和$subject必须在回调之外声明,因此使用use()来使用这些变量。此外,它可以是任意数量的变量。
Mail::send('emails.activation', $data, function($message) use ($email, $subject) {
    $message->to($email)->subject($subject);
});

对于 RFC 部分,SwiftMailer 严格实现 RFC 标准,因为邮件服务提供商如 Google、Apple 严格监控与电子邮件相关的一切,并将未遵循这些标准的域名的电子邮件标记为垃圾邮件。

0

当$email变量为空或邮件不存在时,会出现这些错误,请尝试使用现有的邮件地址。


0
我的解决方案是将我的队列连接从数据库切换到Redis。

0

对于 Laravel < v7:发件人电子邮件地址可以在末尾或开头包含空格

对于 Laravel >= 7:发件人电子邮件地址必须符合 RFC 标准,即邮件地址的末尾或开头不应有任何空格

为了更安全,请在实际调用邮件发送类之前尝试修剪电子邮件地址


0
【已解决】Neos/swiftmailer:邮箱中的地址[]不符合RFC 2822,3.6.2
在/var/www/html/vendor/Packages/Libraries/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php的第261行出现异常:邮箱中的地址[]不符合RFC 2822,3.6.2。
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.'
            );
    }
}

https://discuss.neos.io/t/solved-neos-swiftmailer-address-in-mailbox-given-does-not-comply-with-rfc-2822-3-6-2/3012


-1

请检查电子邮件地址是否正确,且不包含任何空格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接