如何使用Python从outlook下载电子邮件附件



我试着使用我在这里找到的这个脚本。我想做的是给我一些主题行或电子邮件,我会下载并保存附件。

这是我使用的代码:

import datetime
import os
import win32com.client

path = os.path.expanduser("//cottonwood//users///MyDocuments//Projects//outlook crawler")
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
saveattachemnts("Snarf")

我得到这个错误:

File "<COMObject <unknown>>", line 2, in Item
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'Array index out of bounds.', None, 0, -2147352567), None)

Outlook电子邮件是一封工作电子邮件,它是Microsoft Outlook 2010。

我的问题是如何从Microsoft Outlook下载和保存附件。

使用项目。限制方法(Outlook(按主题行和附件进行筛选。请参阅筛选项目

import win32com.client
Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(6)
Filter = ("@SQL=" + chr(34) + "urn:schemas:httpmail:subject" +
chr(34) + " Like 'Snarf' AND " +
chr(34) + "urn:schemas:httpmail:hasattachment" +
chr(34) + "=1")
Items = Inbox.Items.Restrict(Filter)
for Item in Items:
for attachment in Item.Attachments:
print(attachment.FileName)
attachment.SaveAsFile(r"C:\subfolder\" + attachment.FileName")

DASL过滤器支持的使用字符串比较筛选项目包括等价、前缀、短语和子字符串匹配。请注意,当您在Subject属性上进行筛选时,诸如";回复:";以及";FW:";被忽略

相关内容

  • 没有找到相关文章

最新更新