用于在Outlook(MAPI)中将邮件标记为已读的Python命令
我正在编写一个python代码,从outlook中的未读电子邮件下载特定附件,并将这些电子邮件标记为已读。我已经完成了90%的工作,也就是说,我可以反复打开未读的电子邮件并下载带有特定电子邮件的附件。然而,我有两个问题用于在Outlook(MAPI)中将邮件标记为已读的Python命令,python,outlook,mapi,Python,Outlook,Mapi,我正在编写一个python代码,从outlook中的未读电子邮件下载特定附件,并将这些电子邮件标记为已读。我已经完成了90%的工作,也就是说,我可以反复打开未读的电子邮件并下载带有特定电子邮件的附件。然而,我有两个问题 我正在下载同名的附件,如果有两个同名的附件,它只保存从上一次迭代中提取的附件。我尝试在文件名的末尾附加一个时间戳,但效果相同。任何帮助都将不胜感激。这不是强制性要求,因为邮件是按规定的时间间隔发送的,我可以编写一个单独的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.我认为这可能与您的“日期时间戳”有关,因为它试图在同一秒内下载文件,而系统只保留最后一个文件。您可以尝试使用UUID来确保它是唯一的字符串:
import uuid
file_uuid = str(uuid.uuid4())
...
attachments.SaveASFile(os.getcwd() + '\\' + 'my_attachment_name' + file_uuid + '.csv')
要将邮件标记为已读,只需执行以下操作:
message.Unread = False
我认为这可能与你的“日期时间戳”有关,因为它试图在同一秒钟内下载文件,而系统只保留最后一个文件。您可以尝试使用UUID来确保它是唯一的字符串:
import uuid
file_uuid = str(uuid.uuid4())
...
attachments.SaveASFile(os.getcwd() + '\\' + 'my_attachment_name' + file_uuid + '.csv')
要将邮件标记为已读,只需执行以下操作:
message.Unread = False
与您的请求无关,但看起来您在
os.chdir
路径字符串末尾缺少了一个\
,与您的请求无关,但看起来您在os.chdir
路径字符串末尾缺少了一个\