首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用win32com模块从Outlook下载附件

使用win32com模块从Outlook下载附件
EN

Stack Overflow用户
提问于 2021-12-10 17:17:51
回答 2查看 822关注 0票数 1

我想从outlook下载多个附件。我现在有这个代码,但有这个问题。

在这张照片中:

您可以看到attachment变量有问题。

代码语言:javascript
复制
Error: pywintypes.com_error: (-2147352567, 'Exception occurred.', 
  (4096, 'Microsoft Outlook', 'Array index out of bounds.', None, 0, -2147352567), None)

代码:

代码语言:javascript
复制
import datetime
import os
import win32com.client


path = ("C:/Users/greencolor/Desktop/Autoreport/")
today = datetime.date.today()

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items


def saveattachemnts(subject):
    for message in messages:
        if message.Subject == subject and message.Unread or message.Senton.date() == today:
            # body_content = message.body
            attachments = message.Attachments
            attachment = attachments.Item(1)
            for attachment in message.Attachments:
                attachment.SaveAsFile(os.path.join(path, str(attachment)))
                if message.Subject == subject and message.Unread:
                    message.Unread = False
                break

download = saveattachemnts('PB report - next steps')
EN

回答 2

Stack Overflow用户

发布于 2021-12-10 23:07:56

不能将attachment分配给attachments.Item(1),然后将其用于message.Attachments上的迭代

试例

代码语言:javascript
复制
import datetime
import os
import win32com.client

path = r"C:/Users/greencolor/Desktop/Autoreport/"
today = datetime.date.today()

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items


def save_attachments(subject):
    for message in messages:
        if message.Subject == subject and message.Unread or message.Senton.date() == today:
            for attachment in message.Attachments:
                print(attachment.FileName)
                attachment.SaveAsFile(os.path.join(path, str(attachment)))


if __name__ == "__main__":
    save_attachments('PB report - next steps')

更好的方法是使用过滤器。

代码语言:javascript
复制
Items.Restrict(Filter)
票数 1
EN

Stack Overflow用户

发布于 2021-12-10 18:43:05

假设消息有附件,并无条件地访问第一个附件。你需要检查一下attachments.Count > 0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70308205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档