【发布时间】:2018-01-08 14:35:54
【问题描述】:
我正在编写一个 python 代码来从 Outlook 中的未读电子邮件中下载特定附件并将这些电子邮件标记为已读。我已经完成了 90% 的工作,即我可以进行迭代以打开未读电子邮件并下载包含特定电子邮件的附件。但是,我有两个问题。
我正在下载同名的附件,如果有两个同名的附件,它只会保存从上次迭代中提取的那个。我尝试在文件名末尾附加时间戳,但效果相同。任何帮助,将不胜感激。这不是强制性要求,因为邮件是按规定的时间间隔发送的,我可以编写单独的 python 代码来重命名它,但我想将所有内容打包在这封电子邮件中。
我想在附件下载后将电子邮件标记为已读。我不知道这个命令。我已附上代码供您参考。
附:这是我的第一个真正的 python 代码。这也是我在这里的第一篇文章。如果在其他地方已经问过这个问题,我们深表歉意。
import win32com.client
import os
import time
date_time_stamp = time.strftime("%Y%m%d-%H%M%S")
#set custom working directory
os.chdir('C:\\Users\user_name\Desktop\')
print(os.getcwd())
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
main_inbox = outlook.GetDefaultFolder(6)
subfolder = main_inbox.Folders.Item("my_child_folder_under_inbox")
subfolderitems = subfolder.Items
message = subfolderitems.GetFirst()
attachment_name = 'my_attachment_name'
#Loop to pick messages that are unread
for message in subfolderitems:
if message.Unread == True:
print("New Mail Found... Downloading Attachment...")
#Loop to check if the attachment name is the same
for attachments in message.Attachments:
if attachments.Filename == attachment_name:
#Saves to the attachment to the working directory
attachments.SaveASFile(os.getcwd() + '\\' + 'my_attachment_name' + date_time_stamp + '.csv')
print (attachments)
time.sleep(2)
break
#Go to next unread messages if any
message = subfolderitems.GetNext()
else:
print ("Checking...")
-- 谢谢并恭祝安康, Sakthi Ganesh K.
【问题讨论】:
-
与您的请求无关,但您似乎在
os.chdir路径字符串的末尾缺少了一个\