![](/img/trans.png)
[英]How fix this error : exchangelib.errors.InvalidTypeError: 'tzinfo' <UTC> must be of type <class 'exchangelib.ewsdatetime.EWSTimeZone'>
[英]The update of exchangelib remove the attribute 'localize' from EWSTimeZone
我使用的是舊版本的庫 exchangelib。 在我的應用程序的某些用戶開始出現問題之前,我的代碼一切正常。 長話短說,我必須為我和我們 rest 安裝最新版本的 exchangelib exchangelib==4.7.2
所以我的問題是:如何替換方法:tz.localize(EWSDateTime.from_datetime(dt_start_time)) 來過濾收件箱(或其他)中的電子郵件
請找到一小部分代碼,以便更容易閱讀:
from exchangelib import Credentials, Account, Configuration, DELEGATE, FileAttachment
from exchangelib import EWSTimeZone, EWSDateTime
import datetime as dt
# fill in with your Credentials
_outAcctName = ''
_pwd = ''
_subjectEmailToLookFor = ''
o_cred= Credentials(username = _outAcctName, password = _pwd)
o_account = Account(credentials = o_cred, primary_smtp_address = _outAcctName, autodiscover = True, access_type = DELEGATE)
o_inbox = o_account.inbox
# Filtering
d_paramFilter = {}
d_paramFilter['subject__icontains'] = _subjectEmailToLookFor
dt_start_time = dt.datetime.strptime('2022-03-13', '%Y-%m-%d')
dt_end_time = dt.datetime.strptime( '2022-03-15', '%Y-%m-%d')
tz = EWSTimeZone.localzone()
try:
tz_start = tz.localize(EWSDateTime.from_datetime(dt_start_time))
tz_end = tz.localize(EWSDateTime.from_datetime(dt_end_time))
d_paramFilter['datetime_received__range'] = (tz_start, tz_end)
except Exception as err:
print(' ERROR 1: |{}|'.format(err))
try:
o_emails = o_inbox.filter(**d_paramFilter)
except Exception as err:
print(' ERROR 2: |{}|'.format(err))
我現在得到錯誤:錯誤 1:| 'EWSTimeZone' object 沒有屬性 'localize' |
我知道以下文檔。 但這並沒有說明使用什么來具有相同的功能。
嘗試使用以下內容:
tz_start = EWSDateTime.from_datetime(dt_start_time).astimezone(tz)
tz_end = EWSDateTime.from_datetime(dt_end_time).astimezone(tz)
它對我有用
較新版本的 exchangelib 具有支持直接將時區分配給日期的時區實現:
EWSDateTime(2017, 9, 5, 8, 30, tzinfo=EWSTimeZone('Europe/Copenhagen'))
這是基於 Python 3.9 中的新zoneinfo 模塊,具有相同的語法和保證。
與問題無關,但您可以通過直接調用EWSDateTime.strptime()
來簡化代碼:
EWSDateTime.strptime("2022-03-13", "%Y-%m-%d")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.