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)
答案 0 :(得分:0)
您的代码假定收件箱文件夹中的每封邮件都至少具有一个附件。该假设显然是无效的。
请检查Attachments.Count > 0
或实际上遍历附件集合,而不是简单地检索邮件的第一个附件(attachments.Item(1)
)是否包含附件。
还请记住,messages.GetFirst()
将返回一些随机项,因为您绝不会以任何方式对集合进行排序。您很可能会收到最早创建的消息。不要假设Outlook显示的邮件的排序顺序与您的邮件排序相同。