c# - 如何确定在 C# 中发送电子邮件的时区

标签 c# email timezone

谁能推荐一种方法来确定在 C# 中发送电子邮件的时区?

查看电子邮件的 header 信息包括如下信息:

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”键,最后标明了日期、时间和时区。

我应该尝试解析其中的哪一个? 这是确定发件人时区的可靠方法,还是有人推荐更好的方法?

最佳答案

各种“已接收”条目是每个连续服务器以相反顺序接收电子邮件的时间(即最后一个接收邮件的服务器位于堆栈顶部)。但是,这不是消息发送的日期,而是服务器收到消息的日期。

消息的撰写日期由“日期” header 指示,该 header 应该是唯一的。

因此,根据您要执行的具体操作,您应该使用最后一个“已接收” header (根据第一个 SMTP 服务器,该 header 应该是发送邮件的日期)或“日期” header (这应该是用户按下“新邮件”或“回复”按钮的时间,并包含客户端的时区 - 假设您正在处理一个真正的客户端而不是网络邮件)。

如果您正在处理网络邮件,那么时区的内容实际上可以是任何东西,从真正的原始用户 TZ 到网络服务器设置的任何默认值。

关于c# - 如何确定在 C# 中发送电子邮件的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630194/

相关文章:

c# - 是否有一个属性可以避免 MSTest 中的级联单元测试失败?

c# - 如何将通用选择器 Func<T, U> 传递给某些方法以执行搜索?

email - 如何知道 SPF 配置是否正常工作 (Amazon SES/Route53)?

timezone - 在现有的高流量网络应用程序中引入用户特定时区?

python - 使用多种符号在夏令时期间本地化 Pandas 日期时间

c# - XNA 绘制并创建对象数组

c# - 如何对文件 txt 第 5000000 行进行排序?

linux - 收件人地址被拒绝 : User unknown in virtual mailbox table;

css - 通过电子邮件从网站形成结果

javascript - Moment.js : Timezone converter does not work correctly when switching between different timezones