PHP:554消息不允许-头不符合RFC[291]

PHP:554消息不允许-头不符合RFC[291],php,email,smtp,Php,Email,Smtp,这篇文章可以复制,但请在标记之前阅读 我使用一个邮件功能,我做了什么,工作了一段时间,直到我没有开始收到来自Yahoo.com和SkyNet.be的错误消息 现在我知道这一错误是由于电子邮件中的消息ID或日期标题造成的,但我的看法是消息ID是主要问题,需要解决这一部分 这是我如何生成消息ID的代码: // Generate secure unique message ID $msgID = sprintf( "<%s.%s@%s>", base_convert(mic

这篇文章可以复制,但请在标记之前阅读

我使用一个邮件功能,我做了什么,工作了一段时间,直到我没有开始收到来自Yahoo.com和SkyNet.be的错误消息

现在我知道这一错误是由于电子邮件中的
消息ID
日期
标题造成的,但我的看法是
消息ID
是主要问题,需要解决这一部分

这是我如何生成
消息ID
的代码:

// Generate secure unique message ID
$msgID = sprintf(
    "<%s.%s@%s>",
    base_convert(microtime(), 10, 36),
    base_convert(bin2hex(
        function_exists('random_bytes') ? random_bytes(8) : (
                function_exists('openssl_random_pseudo_bytes') ? openssl_random_pseudo_bytes(8) : decbin(rand(100,819))
        )
    ), 16, 36),
    $_SERVER['SERVER_NAME']
);
现在主要的问题是:-我为什么会出错:

数据结束后远程邮件服务器出现SMTP错误:不允许发送554封邮件-邮件头不符合RFC[291]


???

您需要添加到消息头

Date: 2011-11-11
From: <email>
To: <email>
Subject: Subject here
日期:2011-11-11
发件人:
致:
主题:这里是主题
某些服务器正在检查标头是否包含以下字符串:)

这是RFC(最新的)

要解决此问题,必须删除标题数组中的“主题”

Php邮件函数有一个参数,应该用来传递“主题”

因此,如果在其他标题中添加主题,消息的主题将被发送2次,这就是问题所在


有关更多详细信息,请查看此处:

您的意思是
日期
的格式必须为
Y-m-d
仅电子邮件和
从我的列表中缺失?
Date: 2011-11-11
From: <email>
To: <email>
Subject: Subject here
function mail ($to, $subject, $message, $additional_headers = null, $additional_parameters = null)