python - 阅读消息时无附件(无法保存附件)

标签 python microsoft-graph-api email-attachments

我正在使用 python 和 O365 库访问 MS O365 邮件帐户,但无法访问/保存邮件的文件附件

我已经使用普通的 IMAP 等完成了此操作,但现在,因为我们必须使用 oauth2 等 - 我必须通过 MS-Graph 或其他方式访问邮箱。

我选择了 python-O365 库,它可以让我做我需要的事情。

我可以获取文件夹和消息(名称、正文等),但是当我尝试使用 message.attachments 方法时 - 我收到附件数量未知的消息。

我知道此邮件有两个 XLSX 附件,因为我自己发送了该邮件,而且我还可以验证我正在阅读的邮件是否正确,因为我可以阅读邮件正文。

我搜索了保存附件的示例(使用 O365 库),但它们没有解决问题(它们迭代附件集合 - 但我没有任何附件)。

我读到附件与消息分开存储,并且需要单独获取附件,但不知何故这似乎是错误的?

下面的代码说明了问题......

for message in inbox.get_messages(5):
    print(message.subject)
    if message.subject == 'test':
        print('here')
        for att in message.attachments:
            print('also here')
            print(att.attachment_name)
            print(att.attachment_type)
            att.save()

从上面我得到了打印的文本“这里” - 所以我知道正在使用正确的消息。我没有收到我应该收到的文本“也在这里”,因为消息中有两个文件。

那么 - 有什么想法可以保存我的附件吗?

最佳答案

它只是展示了一点时间、一个清晨和一些好咖啡可以带来什么......

我找到了答案。它被隐藏在 github 上 O365 库的问题跟踪器中。

以下代码可以正常工作:

for message in inbox.get_messages(limit=10, download_attachments=True):
    if message.subject == 'test with file':
        print('here')
        if message.has_attachments:
            print('also here')
            print(message.attachments)
            for att in message.attachments:
                print(att)
                att.save()

将其与原始代码进行比较,您会发现我需要指示 get_messages download_attachments=True 并且访问附件的机制也发生了变化。

无论如何 - 它现在正在工作:)

关于python - 阅读消息时无附件(无法保存附件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55501693/

相关文章:

python - 如何通过tesseract OCR读取黑色背景图像上的黑色文本?

microsoft-graph-api - 如何从 Microsoft Graph API 资源管理器区分用户邮箱和共享邮箱

azure - 从 Azure Graph API 检索 itemAttachment

javascript - 使用 Protractor 运行完成后,使用 Node js 发送附有 HTML 文件的电子邮件报告

python - 删除字段中的大括号

python - 将 csv 导入 python 的确切文件夹

c# - 为什么出现错误 "' CalendarsRequestBuilder' 不包含 'Request' “graphClient.Me.Calendars.Request().GetAsync(); 的定义;

asp.net-mvc-4 - 使用 SmtpClient 的 MVC 4.5 : Send an email with . pdf 附件 - 我在这里缺少什么?

Django - 将 View 生成的 PDF 附加到电子邮件

python - 将背景颜色扩展到连接的组件(洪水填充) - 图像处理