当发送带有indy-10的tidMessage组件的邮件时,我的客户邮件服务器得到了有趣的拒绝:
550已拒绝:消息不包含消息ID
即使使用indy自己的演示应用程序
,我也能得到这个http://www.indyproject.org/DemoDownloads/Indy_10_MailClient.zip
我该怎么做才能解决这个问题。谢谢!
答案 0 :(得分:6)
它与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
答案 1 :(得分:4)
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
TIdMessage.MsgId
属性现在生成“Message-ID”标头,无论电子邮件是保存,流式传输还是传输。因此,您不再需要使用ExtraHeaders
属性。