簡體   English   中英

exchangelib 的更新從 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM