我正在使用 Delphi 2007 中的 Indy 从 IMAP 帐户中读取电子邮件标头。
Msg (TidMessage) Date 属性给出了发送电子邮件的日期和时间(从客户端),我试图通过检查 ExtraHeaders 属性来获取服务器接收电子邮件的日期和时间,可以这样做吗?
到目前为止,我已经尝试过 Msg.ExtraHeaders.Values['Received'] 和 Msg.ExtraHeaders.Text,它们都返回了一个空字符串。
我会以正确的方式解决这个问题吗?
没有专门用于指示服务器接收电子邮件的日期/时间的标题。如果服务器想要"X-..."
为此目的创建自定义标头,则由它自己决定。您无法使用 Indy 强制服务器执行此操作。
话虽如此,所有电子邮件都有一系列"Received"
标题,以提供电子邮件经过哪些服务器到达目的地的历史记录。您可以从中提取该数据TIdMessage.Headers
,例如 with Headers.Extract('Received')
(请记住,可以有多个"Received"
标头),然后根据需要手动解析它。 TIdMessage.ExtraHeaders
接收电子邮件时没有意义,只有在发送时才有意义。