通过Win32com从Outlook下载附件时出现COM错误

时间:2018-08-08 13:31:12

标签: python python-3.x outlook win32com

import win32com.client

import os

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(6)

messages = inbox.Items

message = messages.GetFirst()

attachments = message.Attachments

for i in messages:

    if(i.UnRead==True):

        attachment = attachments.Item(1) 

        attachment.SaveASFile(os.getcwd() + '\\' + str(attachment))

    else:

        pass

尝试从Outlook下载附件时出现错误

Error: com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'Array index out of bounds.', None, 0, -2147352567), None) 

1 个答案:

答案 0 :(得分:0)

您的代码假定收件箱文件夹中的每封邮件都至少具有一个附件。该假设显然是无效的。

请检查Attachments.Count > 0或实际上遍历附件集合,而不是简单地检索邮件的第一个附件(attachments.Item(1))是否包含附件。

还请记住,messages.GetFirst()将返回一些随机项,因为您绝不会以任何方式对集合进行排序。您很可能会收到最早创建的消息。不要假设Outlook显示的邮件的排序顺序与您的邮件排序相同。