自从我升级到Indy10后,我注意到收到的TIdMessage上的ReplyTo字段(Msg.ReplyTo[0].Address
)似乎正在填写返回路径头中的地址,如果明确回复标头不存在。我的期望是,如果没有回复标题,Msg.ReplyTo.Count
应为零。这里发生了什么?这是一个错误吗?设计变更?别的什么?如何判断消息是否有单独的回复地址,或者我是否应该从“来自”字段回复该地址?让它回复返回地址似乎给我自己的电子邮件的屠杀版本,不是很有用。
我现有的逻辑(不适用于没有回复地址的邮件)如下所示:
if Msg.ReplyTo.Count>0 then
FReplyTo := Msg.ReplyTo[0].Address
else
FReplyTo := Msg.From.Address;
答案 0 :(得分:4)
在解析电子邮件时,TIdMessage.ReplyTo
首先查看Reply-To
标头,如果为空/缺少,则会查看Return-Path
标头。如果您想知道Reply-To
本身是否为空白/缺失,则必须手动查看TIdMessage.Headers.Values['Reply-To']
。
考虑更多,并对Reply-To
和Return-Path
的实际工作方式进行一些研究,从Return-Path
属性中移除TIdMessage.ReplyTo
可能是有意义的,所以我现在已经做出了改变。