在发送带有 indy-10 的 tidMessage 组件的邮件时,我收到了来自客户邮件服务器的有趣拒绝:
550 被拒绝:消息不包含消息 ID
即使使用 indy 自己的演示应用程序我也会得到这个
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
我该怎么做才能解决这个问题。谢谢!
在发送带有 indy-10 的 tidMessage 组件的邮件时,我收到了来自客户邮件服务器的有趣拒绝:
550 被拒绝:消息不包含消息 ID
即使使用 indy 自己的演示应用程序我也会得到这个
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
我该怎么做才能解决这个问题。谢谢!
它适用于 Indy9,也许在 10 中事情并没有发生太多变化:
procedure AddMsgID(AMsg: TIdMessage);
var
id: AnsiString;
begin
id := GenerateUniqueMsgID;
AMsg.MsgId := id;
AMsg.AddHeader('Message-ID=' + id);
// AMsg.ExtraHeaders.Values['Message-ID'] := id;
end; // AddMsgID
Indy 10 中的 TIdMessage 在将电子邮件编码到套接字或 TStream 时有意省略了“Message-Id”标头。您将不得不使用 TIdMessage.ExtraHeaders 属性,例如:
IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
编辑:
作为对此的后续 -TIdMessage
现在已经更新了它如何处理“Message-ID”和“In-Reply-To”标头的逻辑更改:
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
The TIdMessage.MsgId
property now generates a "Message-ID" header regardless of whether the email is being saved, streamed, or transmitted. So you do not need to use the ExtraHeaders
property anymore.