有没有人能推荐一种在C#中确定发送电子邮件的时区的方法?
查看电子邮件的标题信息包括以下信息:
Received: from mail-ew0-f211.google.com (123.85.219.211) by UKExchange
(10.1.10.99) with Microsoft SMTP Server id 1.2.345.6; Tue, 13 Apr 2010
14:26:24 +0100
Received: by ewy3 with SMTP id 3so288857ewy.6 for
<john.sibly@mycompany.com>; Tue, 13 Apr 2010 06:26:23 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.213.2 with HTTP; Tue, 13 Apr 2010 06:26:23 -0700 (PDT)
X-Originating-IP: [83.244.243.210]
Date: Tue, 13 Apr 2010 14:26:23 +0100
Received: by 10.103.3.17 with SMTP id f17mr3087878mui.123.1271165183473; Tue,
13 Apr 2010 06:26:23 -0700 (PDT)
有许多"Received: from“和"Received: by”键,并在末尾指示日期、时间和时区。
我应该尝试解析其中的哪一个?这是确定发送者时区的可靠方法,还是有人推荐更好的方法?
发布于 2010-04-13 22:22:32
各种“接收的”条目是每个连续的服务器以相反的顺序接收电子邮件的时间(即,接收邮件的最后一个服务器在堆栈的顶部)。但是,这不是发送消息的日期,而是服务器接收消息的日期。
消息的撰写日期由" date“标头表示,该标头应该是唯一的。
因此,根据你到底想做什么,你应该采用最后的“接收”头(应该是根据第一个SMTP服务器发送邮件的日期)或“日期”头(这应该是用户按下“新邮件”或“回复”按钮的时间,并包含客户端的时区-假设您处理的是真正的客户端,而不是web邮件)。
如果您正在处理web邮件,那么时区的内容实际上可以是任何内容,从真正的原始用户TZ到web服务器设置的任何默认值。
发布于 2010-04-13 22:19:28
理论上,接收字段上的时间戳是准确的。以下是文档:
http://cr.yp.to/immhf/date.html#timestamp
唯一的问题是这一部分:
在实践中,
服务器将各种格式错误的信息放入接收的行中。对于读者来说,最好将最后一个分号之前的所有内容都视为非结构化文本,仅供人类使用。
https://stackoverflow.com/questions/2630194
复制相似问题