【发布时间】:2019-03-07 19:45:18
【问题描述】:
使用 Python 3 win32com.client 脚本,该脚本仅搜索来自特定发件人的电子邮件并下载多个附件中的 1 个。
我遇到的问题是,在电子邮件有两个附件的情况下,它会尝试下载并重命名这两个附件,这会用第二个附件覆盖我想要的第一个文件。
文件附件有一个特定的文件名,但有另一个具有相似名称的附件。
到目前为止,我有:
import win32com.client
import os
mydesktop = os.path.expanduser('~') + '/Desktop/'
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
# Select main Inbox
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
sender = 'mysender@domain'
MyDailyfolder = mydesktop + 'My Daily Data/'
try:
for message in messages:
msg_date = message.SentOn.strftime('%Y-%m-%d')
try:
s = message.sender
s = str(s)
if s == sender:
for att in message.Attachments:
if "Dashboard2_dashboard2" in att.FileName: #<---This doesn't work.
outfile_name2 = 'MycustomName' + msg_date + '.csv'
outfile_path2 = MyDailyfolder + outfile_name2
if not os.path.exists(MyDailyfolder): os.makedirs(MyDailyfolder)
# save file
att.SaveASFile(outfile_path2)
print('Saved file:', outfile_name2)
except:
x=1
except:
x=1
结果会将电子邮件中的所有附件下载到我桌面上的新文件夹中,但会覆盖每个副本。我试图只选择包含“Dashboard2dashboard2”的附件。我想我必须使用“for part in msg.walk():”,但以前从未使用过该命令。有什么想法吗?
【问题讨论】:
-
可以使用
pass关键字,而不是写x=1 -
“pass”听起来更直观,谢谢
标签: python-3.x outlook email-attachments