2012-10-01 108 views
0

我从德尔福使用了Indy的IMAP帐户读取电子邮件标题2007额外的头信息

味精(TidMessage)日期属性给出了电子邮件的发送日期和时间(从客户端) ,我试图通过检查ExtraHeaders属性来获取服务器收到电子邮件的日期和时间,可以这样做吗?

到目前为止,我已经试过Msg.ExtraHeaders.Values [“接收”]和Msg.ExtraHeaders.Text,两者返回一个空字符串。

我对此有何看法?

回答

1

没有用于指示日期/,一个电子邮件由服务器接收时间的目的报头具体。如果服务器想要为此目的创建一个自定义的"X-..."标题,那么这是由它自己决定的。 Indy没有办法强制服务器这样做。

即便如此,所有电子邮件都有一系列"Received"标题,以提供电子邮件通过哪些服务器到达目的地的历史记录。您可以从TIdMessage.Headers中提取数据,例如Headers.Extract('Received')(请记住,可以有多个"Received"标头),然后根据需要手动解析它。 TIdMessage.ExtraHeaders收到邮件时没有意义,只有在发送邮件时才有意义。

+0

感谢您的回应,我认为这不会像读1财产一样简单。我会尝试RawHeaders,看看我是否可以提取并解析它们以找到最终的电子邮件服务器。自定义X -....标题是否有标准名称,或者电子邮件服务器是否选择了要命名的名称(X-Received,X-FinalHop等)? – SteB

+0

'“X-”是任何用户自定义标题的标准前缀,例如:'“X-custom-name”'。我提到它只是一种罕见的可能性。实际上,任何服务器都会为您正在查找的数据定义自定义标头,这是值得怀疑的。 –

+0

我在TIdMessage类的任何地方都看不到RawHeaders,只有Headers,ExtraHeaders和LastGeneratedHeaders? – SteB