题
当发送Indy-10的Tidmessage组件时,我的客户端邮件服务器会从我的客户端邮件服务器中获得有趣的拒绝:
550拒绝:消息不包含消息-ID
即使使用Indy自己的演示应用程序,我也会得到这个
http://www.indyproject.org/demodownloads/indy_10_mailclient.zip
我该怎么办来解决这个问题。谢谢!
解决方案
Indy 10中的Tidmessage在编码电子邮件到插座或Tstream时故意省略“消息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
现在,无论电子邮件是被保存,流式传输还是传输,属性现在都会生成“消息ID”标头。因此,您不需要使用 ExtraHeaders
属性了。
其他提示
它可以与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
不隶属于 StackOverflow