在极少数情况下,我的电子邮件会反弹并显示以下消息:
远程主机说:550-RFC2822说所有邮件都应该有一个Message-ID标头。 550大多数没有它的邮件都是垃圾邮件,因此您的邮件已被拒绝。
我已尝试使用以下方式设置message-id标头:
IdMessage1.Headers.Values['Message-ID'] := id;
在这种情况下,id是mydomain中xxxxx格式的字符串。然而,要么不是如何设置消息ID标头,要么它被我的smtp服务器剥离(由我的isp托管)我已经注意到从Outlook发送的电子邮件确实得到了message-id并且它们没有被删除。有没有人对如何提供message-id标题有任何建议,所以它不会被剥离?我还应该包含其他标题吗?我也通过电子邮件发送了我的isp,以防它们的设置结束,但Outlook必须以某种方式进行。
答案 0 :(得分:3)
要在发送或保存电子邮件时提供自定义标头,您必须使用TIdMessage.ExtraHeaders
属性。 接收或加载电子邮件时使用TIdMessage.Headers
属性。
TIdMessage
有一个MsgId
属性,您可以使用它。但是,当发送电子邮件时,MsgId
属性值将被忽略,因此您必须求助TIdMessage.ExtraHeaders
发送自定义Message-ID
标头。但是,保存电子邮件时,TIdMessage.MsgId
值不会被忽略。
修改强>
作为对此的后续行动 - TIdMessage
现已更新,其逻辑更改如何处理" Message-ID"和" In-Reply-To"头:
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
简而言之,TIdMessage.MsgId
属性现在生成一个" Message-ID"创建新电子邮件时的标题(您不再需要使用TIdMessage.ExtraHeaders
属性,但如果需要,仍然可以使用),以及" In-Reply-To"标题不再使用当前"消息ID"自动生成TIdMessage.InReplyTo
属性为空时的标题。