自从我升级到 Indy10 以来,我注意到收到的 TIdMessage 上的 ReplyTo 字段 (Msg.ReplyTo[0].Address
) 似乎被填充为来自如果不存在对 header 的显式回复,则返回路径 header 。我的期望是,如果没有回复 header ,Msg.ReplyTo.Count
应为零。这里发生了什么?这是一个错误吗?设计改变?还有别的事吗?我如何判断该邮件是否有单独的回复地址,或者我是否应该从“发件人”字段回复该地址?让它回复回信地址似乎给出了我自己的电子邮件的屠宰版本,不是很有用。
我现有的逻辑(不适用于没有回复地址的消息)如下所示:
if Msg.ReplyTo.Count>0 then
FReplyTo := Msg.ReplyTo[0].Address
else
FReplyTo := Msg.From.Address;
最佳答案
解析电子邮件时,TIdMessage.ReplyTo
首先查看 Reply-To
header ,如果为空/缺失,则查看 Return-Path
header 。如果您想知道 Reply-To
本身是否为空/缺失,则必须查看 TIdMessage.Headers.Values['Reply-To']
手动。
仔细考虑一下,并研究一下 Reply-To
和 Return-Path
的实际工作原理,删除 Return-Path 可能是有意义的
来自 TIdMessage.ReplyTo
属性,所以我现在已经进行了更改。
关于delphi - 回复 Indy 10 中的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073811/