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

您可以看到attachment变量有问题。
Error: pywintypes.com_error: (-2147352567, 'Exception occurred.',
(4096, 'Microsoft Outlook', 'Array index out of bounds.', None, 0, -2147352567), None)代码:
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')发布于 2021-12-10 23:07:56
不能将attachment分配给attachments.Item(1),然后将其用于message.Attachments上的迭代
试例
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')更好的方法是使用过滤器。
Items.Restrict(Filter)发布于 2021-12-10 18:43:05
假设消息有附件,并无条件地访问第一个附件。你需要检查一下attachments.Count > 0
https://stackoverflow.com/questions/70308205
复制相似问题