【问题标题】:Outlook 365 (pywin32) - cannot access the body of the e-mailsOutlook 365 (pywin32) - 无法访问电子邮件正文
【发布时间】:2020-06-29 16:18:02
【问题描述】:

自从我们移至 Office 半年度 Enterprise 频道,版本 1908,内部版本 11929.20838,我无法访问 body 或甚至电子邮件的发件人也不再通过 MAPI。

Python 版本: 尝试了 3.6.8 32 位、3.6.8 64 位和 3.8.2 32 位。
Pywin32 版本: 尝试了 228和 227

我想知道为什么会这样,因为它在以前版本的 Office(不是企业版)上仍然可以正常工作。

=== 代码示例 ===

import win32com.client

def checkOutlookInbox():
    account = 'MyEmail@example.com'
    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
    inbox = outlook.Folders(account).Folders("Inbox")
    messages = inbox.Items

    for message in messages:
        msg = message.body
        sender = message.Sender
        print(sender)
        print(msg)

=== 输出(错误)===

文件“C:\Python36-32Bit\lib\site-packages\win32com\client\dynamic.py”,第 516 行,在 getattr 中 ret = self.oleobj.Invoke(retEntry.dispid,0,invoke_type,1) pywintypes.com_error: (-2147467259, '未指定的错误', None, None)

===

任何想法为什么会在这个特定的 Office 版本上发生这种情况?

【问题讨论】:

    标签: python outlook office365 pywin32


    【解决方案1】:

    首先,您没有使用 MAPI - 这是 Outlook 对象模型。 其次,您确定收件箱中只有邮件项目对象,而没有报告项目 (NDR) 或会议请求/更新?

    【讨论】:

    • 你是对的,它是OOM。不是 MAPI。顺便说一句,是的,我确信我只有电子邮件对象。该应用程序已经使用了一年多,如前所述,它仍然可以在以前版本的 Outlook(以前的版本,而不是“企业”版本)上使用相同的代码。
    • 如果您避免接触 Sender 和 Body 属性并且只访问像 Subject 这样的属性,它是否有效?
    • 是的,确实如此。实际上,在电子邮件的一些属性中,我仍然可以访问主题。但是 Sender 和 Body 提供了上述错误。除非我在以前的版本上运行代码。然后我就可以访问所有属性了。
    • 那么这表明您正在运行安全补丁 - 您需要使用扩展 MAPI(C++ 或 Delphi)或 Redemption(任何语言)或确保客户端计算机具有-date 安装防病毒应用程序。
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2021-12-26
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多