当我用indy-10的tidMessage组件发送邮件时,我从我的客户邮件服务器得到了有趣的拒绝:
550被拒绝:消息不包含Message-ID
我甚至在使用indy自己的演示应用程序时也会得到这个结果
http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
我该怎么做才能解决这个问题。谢谢!
发布于 2010-12-21 18:09:10
在将电子邮件编码为套接字或TStream时,Indy 10中的TIdMessage会故意省略“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
TIdMessage.MsgId属性现在生成一个"Message-ID“标头,而不管电子邮件是被保存、流式传输还是被传输。因此,您不再需要使用ExtraHeaders属性。
发布于 2010-12-21 14:56:52
它适用于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; // AddMsgIDhttps://stackoverflow.com/questions/4496821
复制相似问题