Exchangelib item.sender возвращает байты - PullRequest
0 голосов
/ 14 ноября 2018

введите описание изображения здесь

У меня недавно возникла проблема с некоторыми значениями, возвращенными из item.sender - прикреплен экранный дамп 2

Как вы можете видеть в нижней части рисунка, это не обычная форма, возвращаемая item.sender, которая обычно имеет форму:

Mailbox(name='ReCircle Recycling', email_address='aldoushicks@recirclerecycling.com', routing_type='SMTP', mailbox_type='OneOff')

Кто-нибудь еще видел это?

Как вы справляетесь с этим?

т.е. несмотря на то, что я использую предложение / исключение, этот результат все еще приводит к зависанию моей среды IDE.

Я перезапустил скрипт сегодня, используя точно такой же фильтр даты, и этого не произошло. Поэтому я вынужден спросить, что случилось? Почему это не происходит снова?

Его странное поведение. Это может привести к сбою сценария в будущем, поэтому интересно, как это предотвратить.

код:

from collections import defaultdict
from datetime import datetime
import logging

from exchangelib import DELEGATE, Account, Credentials, \
EWSDateTime, EWSTimeZone, Configuration
from exchangelib.util import PrettyXmlHandler

logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()])

gusername="" #deleted :/
gpassword="" #deleted :/
gprimary_smtp_address="bspks@lunet.lboro.ac.uk"
em_dict = defaultdict(list)

def contactServer(pusername, ppassword,pprimary_smtp_address):
    creds = Credentials(pusername, ppassword)
    config = Configuration(server='outlook.office365.com/EWS/Exchange.asmx', \
                           credentials=creds)
    return Account(
        primary_smtp_address=pprimary_smtp_address,
        autodiscover=False, 
        config = config,
        access_type=DELEGATE
    )

print ("connecting to server\n")
account = contactServer(gusername, gpassword, gprimary_smtp_address)

dt_string = "2018-11-01 12:41:19+00:00" #usually comes out from db, stringified for debugging
dt = datetime.strptime(dt_string, '%Y-%m-%d %H:%M:%S+00:00')
tz = EWSTimeZone.timezone('Europe/London') 
last_datetime = tz.localize(dt)

for item in account.inbox.filter(datetime_received__gt=last_datetime):
    if isinstance(item, Message):

        em_dict["username"].append(gusername)
        em_dict["gprimary_smtp_address"].append(gprimary_smtp_address)
        em_dict["datetime_received"].append(item.datetime_received)
        em_dict["subject"].append(item.subject)
        em_dict["body"].append(item.body)
        em_dict["item_id"].append(item.item_id)
        em_dict["sender"].append(item.sender)

        # extract the email address from item.sender
        emailaddr = item.sender.email_address
        print ("debug email addr: ", emailaddr)

print ("downloaded emails\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...