簡體   English   中英

exchangelib 錯誤:消息 object 沒有屬性 item_id

[英]exchangelib bug: Message object has no attribute item_id

盡管我在一年的大部分時間里一直在愉快地運行這個腳本,但我最近升級到了 Catalina OSX 並重新安裝了 Exchangelib。 現在我收到 item_id 的錯誤:

'消息' object 沒有屬性 'item_id'

這是我的代碼,我很想知道我做錯了什么請TIA ps-原諒任何復雜的編碼......

from exchangelib import DELEGATE, Account, Credentials, Message, \
EWSDateTime, EWSTimeZone, Configuration
from exchangelib.util import PrettyXmlHandler
import logging
logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()]) 
from datetime import datetime, timedelta
import monthdelta as md
import sqlite3 
import pandas as pd
import pm_ews_module as pem 

__DBPATH__ = "/Users/patrickstacey/CODE/JUMPY_CODE/dev/data/test_data_tbase11_002"    
__CONFIGFILE__ =  '/Users/patrickstacey/CODE/JUMPY_CODE/dev/config/jumpyConfig.csv' 
__OUTLOOK_EMAIL__ = 'bspks@lunet.lboro.ac.uk'
_PRIMARY_SMTP_ADDRESS_ = 'bspks@lunet.lboro.ac.uk'
__OUTLOOK_PASSWORD__ = '****'

def connect_to_EWS(__OUTLOOK_EMAIL__, __OUTLOOK_PASSWORD__, _PRIMARY_SMTP_ADDRESS_): 
    creds = Credentials(__OUTLOOK_EMAIL__,__OUTLOOK_PASSWORD__)
    config = Configuration(server='outlook.office365.com/EWS/Exchange.asmx', \
                           credentials=creds)

    return Account(
    primary_smtp_address=_PRIMARY_SMTP_ADDRESS_,
    autodiscover=False, 
    config = config,
    access_type=DELEGATE
    )

last_analysis = pem.determine_start_date_required(__OUTLOOK_EMAIL__) 

if last_analysis == "no records": 
    df = pd.read_csv(__CONFIGFILE__)
    retrodays = df['detail'].where(df['item'] == "demo_user_days_retro").dropna().values
    retrodays = int(retrodays)
    last_analysis = None
    last_analysis = datetime.today() - timedelta(days=retrodays)
    (year,month,day,hour,mins,secs) = pem.unpackDateElements(str(last_analysis))
    tz = EWSTimeZone.timezone('Europe/London')
    last_analysis = tz.localize(EWSDateTime(year, month, day, hour, mins, secs))

account = connect_to_EWS(__OUTLOOK_EMAIL__, __OUTLOOK_PASSWORD__, __OUTLOOK_EMAIL__)

for item in account.inbox.filter(datetime_received__gt=last_analysis):
    if type(item) == Message:
        try:   
            db = sqlite3.connect(__DBPATH__)
            cursor = db.cursor()
            cursor.execute("INSERT INTO escores_log(email, datetime, subject, body, emailtype, pos_threshold, item_id, status, sender) VALUES(?,?,?,?,?,?,?,?,?)", (__OUTLOOK_EMAIL__, str(item.datetime_received), pem.deEmojify(item.subject), item.text_body, "received", 0.5, item.item_id, 0, item.sender.email_address))
            print("Inserted an email from ",item.sender.email_address," about ",item.subject," on ",str(item.datetime_received))
            db.commit()
            db.close()

        except Exception as e: 
            print ("Exception found: "+str(e))
            pass

item_id在 1.12.0 版本中被重命名為id ,最終在 2.0.0 中被棄用。 請參閱 CHANGELOG 中的注釋: https://github.com/ecederstrand/exchangelib/blob/master/CHANGELOG.md#200

看起來 item_id 現在被稱為 id。 我做了一個有根據的猜測。 所以腳本再次起作用。 期待聽到對此的任何其他意見。 非常感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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