回复Indy 10中的地址?

时间:2013-06-12 19:35:44

标签: delphi indy10

自从我升级到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;

1 个答案:

答案 0 :(得分:4)

在解析电子邮件时,TIdMessage.ReplyTo首先查看Reply-To标头,如果为空/缺少,则会查看Return-Path标头。如果您想知道Reply-To本身是否为空白/缺失,则必须手动查看TIdMessage.Headers.Values['Reply-To']

考虑更多,并对Reply-ToReturn-Path的实际工作方式进行一些研究,从Return-Path属性中移除TIdMessage.ReplyTo可能是有意义的,所以我现在已经做出了改变。