簡體   English   中英

如何使用ExchangeLib過濾掉或跳過收件箱中的會議響應? 目前正在獲取AttributeError

[英]How do I filter out or skip meeting responses in my inbox using ExchangeLib? Currently getting AttributeError

我需要在Outlook收件箱中迭代電子郵件並獲取主題,發件人和日期等屬性。 但是,每當我在收件箱中遇到日歷會議響應時,我都會得到一個AttributeError(我無法使用異常處理)。 錯誤消息是“'NoneType'對象沒有屬性'find'”。 我使用的是Python 3.6和ExchangeLib 1.12.4。

根據https://github.com/ecederstrand/exchangelib/blob/master/README.md ,我應該能夠這樣做:

for item in account.inbox.all().order_by('-datetime_received')[:5]:
    if isinstance(item, MeetingResponse):
       do_something

但是我的下面的代碼無法識別該項是MeetingResponse並且一旦到達會議響應就拋出AttributeError


from exchangelib import DELEGATE, Account, Credentials, Configuration, CalendarItem, EWSDateTime
from exchangelib.items import MeetingRequest, MeetingCancellation, MeetingResponse

...

for item in account.inbox.all().order_by('-datetime_received')[:100]:
    if isinstance(item, MeetingResponse):
        print('its a meeting response')
        continue
    else:
        subj= item.subject
        senderName = item.sender.name
        senderEmail = item.sender.email_address
        year = item.datetime_received.year
        month = item.datetime_received.month
        day = item.datetime_received.day
        df=df.append({'Subject': subj, 'SenderName':senderName, 'SenderEmail':senderEmail,'Year': year, 'Month':month, 'Day': day}, ignore_index=True)

我試過的其他東西不起作用,包括這樣的異常處理:

       try:
            subj= item.subject
            senderName = item.sender.name
            senderEmail = item.sender.email_address
            year = item.datetime_received.year
            month = item.datetime_received.month
            day = item.datetime_received.day
            df=df.append({'Subject': subj, 'SenderName':senderName, 'SenderEmail':senderEmail,'Year': year, 'Month':month, 'Day': day}, ignore_index=True)
            #print(sender)
        except Exception as e:
            print(e)

並按照此處的建議檢查消息類型: Python exchangelib:檢查項目是否為消息

但是,無論如何,我總是得到同樣的錯誤:AttributeError:'NoneType'對象沒有屬性'find'

這是回溯: 錯誤回溯圖像

這會使代碼失敗的收件箱消息: 會議響應

這是一個正常的收件箱消息,不會使代碼失敗: 正常消息 - 與日歷項無關

您可能感興趣的其他信息:如果我過濾掉了不包含日歷項目的項目,我沒有錯誤,請參閱下面的工作代碼。 但是,我不知道如何過濾掉會議回復。

for item in account.inbox.filter(subject__contains='Lexis')[:10]:
    print(item.subject)

但是,下面的代碼不起作用並拋出相同的AttributeError

for item in account.inbox.filter(subject__contains='Accepted:')[:10]:
    print(item.subject)

它不允許我使用ELEMENT_NAME__contains或response_tag__contains進行過濾

這是我運行“for account in account.inbox.filter(subject__contains ='Accepted:')[:1]時得到的部分xml:......”

 DEBUG:exchangelib.queryset:Initializing cache DEBUG:exchangelib.folders:Finding [Inbox(Root( <exchangelib.account.Account object at 0x0000000B4EA97278>, ... Response time: 0.39099999982863665 Status code: 200 Request headers: {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'Keep-Alive', 'Content-Type': 'text/xml; charset=utf-8', 'Cookie': 'delted'; ClientId=FTNTNFBGUKKHMWERGKW; exchangecookie=deleted', 'Content-Length': '1060', 'Authorization': deleted} Response headers: {'Cache-Control': 'private', 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/xml; charset=utf-8', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding', 'Server': 'Microsoft-IIS/8.5', 'request-id': 'ed9787e2-b43e-4df5-bf8b-a2d91a0f4b6c', 'X-CalculatedBETarget': 'ex2.parent_company.local', 'X-DiagInfo': 'EX2', 'X-BEServer': 'EX2', 'X-AspNet-Version': '4.0.30319', 'Set-Cookie': deleted; expires=Sat, 15-Jun-2019 14:06:36 GMT; path=/EWS; secure; HttpOnly', 'Persistent-Auth': 'true', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'EX2', 'Date': 'Thu, 16 May 2019 14:06:36 GMT'} Request data: b' <?xml version=\\'1.0\\' encoding=\\'utf-8\\'?>\\n <s:Envelope xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <s:Header> <t:RequestServerVersion Version="Exchange2013_SP1" /> <t:TimeZoneContext> <t:TimeZoneDefinition Id="Eastern Standard Time" /></t:TimeZoneContext> </s:Header> <s:Body> <m:FindItem Traversal="Shallow"> <m:ItemShape> <t:BaseShape>IdOnly</t:BaseShape> </m:ItemShape> <m:IndexedPageItemView BasePoint="Beginning" MaxEntriesReturned="1" Offset="0" /> <m:Restriction> <t:Contains ContainmentComparison="Exact" ContainmentMode="Substring"> <t:FieldURI FieldURI="item:Subject" /> <t:Constant Value="Accepted:" /></t:Contains> </m:Restriction> <m:ParentFolderIds> <t:DistinguishedFolderId Id="inbox"> <t:Mailbox> <t:EmailAddress>my_user_name@co_name.com</t:EmailAddress> <t:RoutingType>SMTP</t:RoutingType> <t:MailboxType>Mailbox</t:MailboxType> </t:Mailbox> </t:DistinguishedFolderId> </m:ParentFolderIds> </m:FindItem> </s:Body> </s:Envelope>' Response data: b' <?xml version="1.0" encoding="utf-8"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="1473" MinorBuildNumber="3" Version="V2_23" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" /> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:FindItemResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:RootFolder IndexedPagingOffset="1" TotalItemsInView="23" IncludesLastItemInRange="false"> <t:Items> <t:MeetingResponse> <t:ItemId Id=deleted/></t:MeetingResponse> </t:Items> </m:RootFolder> </m:FindItemResponseMessage> </m:ResponseMessages> </m:FindItemResponse> </s:Body> </s:Envelope>' DEBUG:exchangelib.util:Session 27048 thread 16144: Useful response from https://cloudmail.firm_name.com/EWS/Exchange.asmx ... Response time: 0.06199999991804361 Status code: 200 Request headers: {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'Keep-Alive', 'Content-Type': 'text/xml; charset=utf-8', 'Cookie': delted; ClientId=deleted; exchangecookie=efc27b1d76ad4fea808e577a4e34aa30', 'Content-Length': '5290'} Response headers: {'Cache-Control': 'private', 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/xml; charset=utf-8', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding', 'Server': 'Microsoft-IIS/8.5', 'request-id': '7bbb3dee-e6f0-42d2-8e0c-dd296e02c27a', 'X-CalculatedBETarget': 'ex2.parent_company.local', 'X-DiagInfo': 'EX2', 'X-BEServer': 'EX2', 'X-AspNet-Version': '4.0.30319', 'Set-Cookie': 'exchangecookie=efc27b1d76ad4fea808e577a4e34aa30; path=/, X-BackEndCookie=S-1-5-21-3493326517-1059625486-1703856831-1754=u56Lnp2ejJqBy5nIx5yeyM/Sys/NyNLLy8rL0saczZnSycqZnJ3HzsudyM/MgYHNz87G0s/J0s7Kq87Lxc/JxczI; expires=Sat, 15-Jun-2019 14:06:37 GMT; path=/EWS; secure; HttpOnly', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'EX2', 'Date': 'Thu, 16 May 2019 14:06:36 GMT'} Request data: b' <?xml version=\\'1.0\\' encoding=\\'utf-8\\'?>\\n <s:Envelope xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <s:Header> <t:RequestServerVersion Version="Exchange2013_SP1" /> <t:TimeZoneContext> <t:TimeZoneDefinition Id="Eastern Standard Time" /></t:TimeZoneContext> </s:Header> <s:Body> <m:GetItem> <m:ItemShape> <t:BaseShape>IdOnly</t:BaseShape> <t:AdditionalProperties> <t:FieldURI FieldURI="calendar:EndTimeZone" /> <t:FieldURI FieldURI="calendar:EndTimeZone" /> <t:FieldURI FieldURI="calendar:StartTimeZone" /> <t:FieldURI FieldURI="calendar:StartTimeZone" /> <t:FieldURI FieldURI="calendar:AdjacentMeetingCount" /> <t:FieldURI FieldURI="calendar:AllowNewTimeProposal" /> <t:FieldURI FieldURI="calendar:AppointmentReplyTime" /> <t:FieldURI FieldURI="calendar:AppointmentSequenceNumber" /> <t:FieldURI FieldURI="meeting:AssociatedCalendarItemId" /> <t:FieldURI FieldURI="item:Attachments" /> <t:FieldURI FieldURI="message:From" /> <t:FieldURI FieldURI="message:BccRecipients" /> <t:FieldURI FieldURI="item:Body" /> <t:FieldURI FieldURI="item:Categories" /> <t:FieldURI FieldURI="message:CcRecipients" /> <t:FieldURI FieldURI="calendar:ConferenceType" /> <t:FieldURI FieldURI="calendar:ConflictingMeetingCount" /> <t:FieldURI FieldURI="item:ConversationId" /> <t:FieldURI FieldURI="message:ConversationIndex" /> <t:FieldURI FieldURI="message:ConversationTopic" /> deleted remaining /></t:AdditionalProperties> </m:ItemShape> </m:GetItem> </s:Body> </s:Envelope>' Response data: b' <?xml version="1.0" encoding="utf-8"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="1473" MinorBuildNumber="3" Version="V2_23" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" /> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:GetItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:GetItemResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:Items> <t:MeetingResponse> <t:MimeContent CharacterSet="UTF-8">+deleted_to_save_space==</t:MimeContent> <t:ItemId deleted/><t:ItemClass>IPM.Schedule.Meeting.Resp.Pos</t:ItemClass><t:Subject>Accepted: I need a meeting request response in my inbox for debugging</t:Subject><t:Sensitivity>Normal</t:Sensitivity><t:Body BodyType=" HTML " IsTruncated="false "> deleted </t:Body><t:DateTimeReceived>2019-05-15T13:49:30-04:00</t:DateTimeReceived><t:Size>10767</t:Size><t:Importance>Normal</t:Importance><t:IsSubmitted>false</t:IsSubmitted><t:IsDraft>false</t:IsDraft><t:IsFromMe>false</t:IsFromMe><t:IsResend>false</t:IsResend><t:IsUnmodified>true</t:IsUnmodified><t:InternetMessageHeaders><t:InternetMessageHeader HeaderName="Received ">from ex1.parent_company.local (10.0.36.13) by ex2.parent_company.local (10.0.36.14) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Mailbox Transport; Wed, 15 May 2019 13:49:29 -0400</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Received ">from ex2.parent_company.local (10.0.36.14) by EX1.parent_company.local (10.0.36.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 15 May 2019 13:49:29 -0400</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Received ">from ex2.parent_company.local ([fe80::69e0:8dd2:36c7:ee74]) by EX2.parent_company.local ([fe80::69e0:8dd2:36c7:ee74%12]) with mapi id 15.00.1473.003; Wed, 15 May 2019 13:49:29 -0400</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Content-Type ">application/ms-tnef</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Content-Transfer-Encoding ">binary</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Subject ">Accepted: I need a meeting request response in my inbox for debugging</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Thread-Topic ">I need a meeting request response in my inbox for debugging</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Thread-Index ">AdULRnbwosyAOWPxSuSGj1JtvGTLdAAAAliAAAACz/A=</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Date ">Wed, 15 May 2019 13:49:29 -0400</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Message-ID ">&lt;9d0c3918cd1843778df749ee247fe4dd@EX2.parent_company.local&gt;</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Accept-Language ">en-CA, en-US</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Content-Language ">en-US</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-SCL ">-1</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-TNEF-Correlator ">&lt;9d0c3918cd1843778df749ee247fe4dd@EX2.parent_company.local&gt;</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="MIME-Version ">1.0</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Transport-FromEntityHeader ">Hosted</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-MessageDirectionality ">Originating</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-AuthSource ">EX2.parent_company.local</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-AuthAs ">Internal</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-AuthMechanism ">03</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-Originating-IP ">[10.0.36.38]</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-Network-Message-Id ">ef6a25be-a08a-4029-28c0-08d6d95dae26</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="Return-Path ">SKim@co_name.com</t:InternetMessageHeader><t:InternetMessageHeader HeaderName="X-MS-Exchange-Organization-AVStamp-Enterprise ">1.0</t:InternetMessageHeader></t:InternetMessageHeaders><t:DateTimeSent>2019-05-15T13:49:29-04:00</t:DateTimeSent><t:DateTimeCreated>2019-05-15T13:49:30-04:00</t:DateTimeCreated>deleted...<t:LastModifiedTime>2019-05-15T13:49:34-04:00</t:LastModifiedTime><t:IsAssociated>false</t:IsAssociated><t:WebClientReadFormQueryString>deleted</t:WebClientReadFormQueryString><t:ConversationId Id=deleted/><t:UniqueBody BodyType=" HTML " IsTruncated="false ">&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;</t:UniqueBody><t:TextBody BodyType="Text " IsTruncated="false ">&#xD;\\n</t:TextBody><t:Sender><t:Mailbox><t:Name>Name</t:Name><t:EmailAddress>name@co_name.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:Sender><t:ToRecipients><t:Mailbox><t:Name>My Full Name</t:Name><t:EmailAddress>my_user_name@co_name.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:ToRecipients><t:IsReadReceiptRequested>false</t:IsReadReceiptRequested><t:IsDeliveryReceiptRequested>false</t:IsDeliveryReceiptRequested><t:ConversationIndex>AdULRnbwosyAOWPxSuSGj1JtvGTLdAAAAliAAAAC6g8=</t:ConversationIndex><t:ConversationTopic>I need a meeting request response in my inbox for debugging</t:ConversationTopic><t:From><t:Mailbox><t:Name>name</t:Name><t:EmailAddress>name@co_name.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:From><t:InternetMessageId>delted</t:InternetMessageId><t:IsRead>true</t:IsRead><t:ReceivedBy><t:Mailbox><t:Name>My Full Name</t:Name><t:EmailAddress>my_user_name@co_name.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:ReceivedBy><t:ReceivedRepresenting><t:Mailbox><t:Name>My Full Name</t:Name><t:EmailAddress>my_user_name@co_name.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:ReceivedRepresenting><t:AssociatedCalendarItemId Id=deleted/><t:IsDelegated>false</t:IsDelegated><t:IsOutOfDate>false</t:IsOutOfDate><t:HasBeenProcessed>true</t:HasBeenProcessed><t:ResponseType>Accept</t:ResponseType><t:Start>2019-05-15T14:00:00-04:00</t:Start><t:End>2019-05-15T14:30:00-04:00</t:End><t:Location/><t:CalendarItemType>Single</t:CalendarItemType></t:MeetingResponse></m:Items></m:GetItemResponseMessage></m:ResponseMessages></m:GetItemResponse></s:Body></s:Envelope>' DEBUG:exchangelib.util:Session 27048 thread 2440: Useful response from https://cloudmail.firm_name.com/EWS/Exchange.asmx DEBUG:exchangelib.protocol:Server cloudmail.firm_name.com: Releasing session 27048 DEBUG:exchangelib.services:GetItem._get_elements result 1 of 1 is ready 

事實證明這是由MessageReply類上的重復字段定義導致的exchangelib中的錯誤。 https://github.com/ecederstrand/exchangelib/commit/cc8590b5557585ecbb3319f9391e30ace2f411fa中修復

暫無
暫無

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

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