Python 使用Pythin脚本从Outlook下载附件
现在我写了一个代码,每天运行它来获取昨天电子邮件的附件。 当我运行它时,不会下载附件,而是会得到一个名为“@”的文件 代码如下:Python 使用Pythin脚本从Outlook下载附件,python,outlook,download,attachment,Python,Outlook,Download,Attachment,现在我写了一个代码,每天运行它来获取昨天电子邮件的附件。 当我运行它时,不会下载附件,而是会得到一个名为“@”的文件 代码如下: import win32com.client import os from datetime import datetime, date, time, timedelta outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") inbox = outlook.Get
import win32com.client
import os
from datetime import datetime, date, time, timedelta
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6).Folders.Item("Inbox Subfolder Name")
messages = inbox.Items
message = messages.GetFirst()
subject = message.Subject
# Get yesterdays date for the purpose of getting emails from this date
d = (date.today() - timedelta (days=1)).strftime("%y-%m-%d")
yesterdaydate=("20"+d)
print yesterdaydate
get_path_clt1 = "Folder Location" + yesterdaydate+"\\"
if os.path.exists(get_path_clt1):
print " File Exists"
else:
os.mkdir(get_path_clt1)
for m in messages:
date = str(m.senton)
date_time_obj = datetime.strptime(date,'%m/%d/%y %H:%M:%S')
messagedate=date_time_obj.date()
if str(yesterdaydate) == str(messagedate) and (m.Subject == "Subject Name to compare") :
print (message)
print (messagedate)
attachments = message.Attachments
num_attach = len([x for x in attachments])
print("test-1")
for x in range(1, num_attach+1):
print("test-in-1")
attachment = attachments.Item(x)
attachment.SaveAsFile(os.path.join(get_path_clt1,attachment.FileName))
print (attachment)
print ("---------------------")
break
message = messages.GetNext()
else:
message = messages.GetNext()
首先,无需迭代所有附件即可获得编号:
num_attach = len([x for x in attachments])
相反,可以使用返回整数的属性,该整数指示指定集合中的对象计数
其次,请确保指定了有效的文件名:
attachment.SaveAsFile(os.path.join(get_path_clt1,attachment.FileName))
我建议在生成您自己的文件之前检查附件.FileName
值
最后,您可以检查返回指示指定对象类型的
OlAttachmentType
常量的属性 当我检查attachment.type时,我得到“1”,attachment.filename为“@”