Imaplib интерпретирует временную метку электронной почты без настройки дневного света

#python #dst #imaplib

#python #летнее время #imaplib

Вопрос:

У меня есть скрипт, который обрабатывает данные, относящиеся к предыдущему сообщению электронной почты, которое приходит каждый день в 00: 30. Таким образом, данные за 30 марта 2019 года будут отправлены в 00:30 31 марта. Я извлекаю электронные письма, используя следующий код на Python 2.7

 server = imaplib.IMAP4_SSL(HOST)
server.login(USERNAME, PASSWORD)
server.select('INBOX'
rv, data = server.search(None,'FROM', From, 'SUBJECT', Subject,'SENTSINCE', from_date)
  

Код отлично работал в течение 3 месяцев до перехода на летнее британское время (я живу в Великобритании). При проверке данных imap обнаружил, что почта была получена в 23:30 30 марта вместо 00:30 31 марта. Моя ОТПРАВКА была 31 марта 2019 года, и imap не возвращал никаких сообщений.

Моим часовым поясом является стандартное время GMT, и когда я использую datetime, я получаю правильное время, скорректированное с учетом перехода на летнее время. Мой вопрос в том, как я могу установить часовой пояс, чтобы imaplib правильно интерпретировал время?

Комментарии:

1. Строка кода server.select('INBOX' кажется неполной.

2. Что говорится в RFC о часовых поясах?

3. В IMAP RFC ничего не говорится о часовых поясах, поэтому интерпретация зависит от сервера, и у клиента нет возможности управлять этим. Многие серверы работают по местному времени, многие по UTC и т.д. Адаптируйте свой запрос так, как это необходимо для вашего сервера.