[英]How to save email from outlook using python
我正在嘗試使用以下 python 腳本從子文件夾中保存電子郵件,我試圖限制days=1
意味着我只需要保存 1 天前的電子郵件。
from win32com.client import Dispatch
from datetime import date, timedelta
import datetime as dt
msg_location = r'C:\Users\rahul\Desktop\msg_files'
outlook = Dispatch("outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6).Folders['Email_snapper']
messages = inbox.Items
message = messages.GetFirst()
Body_content = message.Body
print(Body_content)
for msg in messages:
lastWeekDateTime = dt.datetime.now() - dt.timedelta(days=1)
lastWeekDateTime = lastWeekDateTime.strftime('%m/%d/%Y %H:%M %p')
message = messages.Ryestrict("[ReceivedTime] >= '" + lastWeekDateTime + "'")
#name = str(message)
message.SaveAs(msg+".msg")
嘗試像下面這樣設置你的過濾器
例子
import re
import win32com.client
import datetime as dt
import os
Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(6)
lastWeekDateTime = dt.datetime.now() - dt.timedelta(days=1)
lastWeekDateTime = lastWeekDateTime.strftime('%m/%d/%Y %H:%M %p')
print(lastWeekDateTime)
Filter = ("@SQL=" + chr(34) + "urn:schemas:httpmail:datereceived" +
chr(34) + " >= '" + lastWeekDateTime + "'")
Items = Inbox.Items.Restrict(Filter)
Items.Sort('[ReceivedTime]', False)
for Item in Items:
print(Item.Subject)
print(Item.ReceivedTime)
save_name = re.sub('[^A-Za-z0-9]+', '', str(Item.Subject)) + '.msg'
Item.SaveAs(os.getcwd() + '//' + save_name)
else:
print("No Item")
首先,它是Restrict
,而不是Ryestrict
。
其次, Restrict
返回Items
集合,而不是單個項目。 您需要遍歷該集合中的項目。 如果您只期望一個項目,請使用Find
而不是Restrict
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.