Как определить часовой пояс, из которого было отправлено письмо в C # - PullRequest
3 голосов
/ 13 апреля 2010

Кто-нибудь может порекомендовать способ определения часового пояса, из которого было отправлено письмо в 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)

Существует несколько ключей «Получено: от» и «Получено: от» с указанием даты, времени и часового пояса в конце.

Какой из них я должен попытаться проанализировать? Это надежный способ выяснить часовой пояс отправителя, или кто-нибудь порекомендует лучший способ?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2010

Различные «полученные» записи - это время, когда каждый последующий сервер получал электронную почту в обратном порядке (т. Е. Последний сервер, получивший почту, находится на вершине стека). Однако это не дата отправки сообщения, а дата получения сообщения сервером.

Дата составления сообщения указывается заголовком «Дата», который должен быть уникальным.

Таким образом, в зависимости от того, что именно вы хотите сделать, вы должны либо взять ПОСЛЕДНИЙ «полученный» заголовок (который должен быть датой, когда сообщение было отправлено в соответствии с первым SMTP-сервером), либо заголовок «date» (который должно быть время, когда пользователь нажал кнопку «Новая почта» или «Ответить» и содержит часовой пояс клиента (при условии, что вы имеете дело с реальным клиентом, а не с веб-почтой).

Если вы имеете дело с веб-почтой, то содержимое часового пояса может быть чем угодно, от настоящего оригинального пользовательского TZ до любого значения по умолчанию, установленного веб-сервером.

3 голосов
/ 13 апреля 2010

Теоретически отметка времени в поле «Получено» является точной. Вот документация:

http://cr.yp.to/immhf/date.html#timestamp

Единственная проблема - эта часть:

На практике SMTP-серверы помещают все виды плохо отформатированной информации в полученные строки. Вероятно, для читателей лучше всего воспринимать все до последней точки с запятой как неструктурированный текст исключительно для потребления человеком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...