[英]How to access latest mail from a specific sender in outlook using python script
[英]How to get date & time of received outlook mail and check body from particular sender using python
我正在嘗試使用 python 實現以下目標:從特定發件人獲取最近 24 小時的 Outlook 收件箱郵件,並檢查該電子郵件正文中是否顯示了特定文本
下面是我試過的:
import sys, win32com.client, datetime
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
s = outlook.GetDefaultFolder(6).Items
# Get yesterdays date for the purpose of getting emails from this date
d = (datetime.date.today() - datetime.timedelta (days=1)).strftime("%d-%m-%y")
# get the email/s
msg = s.GetLast()
# Loop through emails
while msg:
# Get email date
date = msg.SentOn.strftime("%d-%m-%y")
# Set the critera for whats wanted
if (d == date) and ("MAINTENANCE" in msg.body) and ("Upgrade" in msg.Subject) and msg.Sender == "aa@bb.com" :
print("Date : ", date)
msg = s.GetPrevious()
錯誤 :
date = msg.SentOn.strftime("%d-%m-%y") 文件 "C:\\Users\\1024983\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\win32com\\client\\dynamic. PY”,線路527,在GETATTR加注AttributeError的( “%S%S” %(自用戶名,ATTR)。)AttributeError的:GetPrevious.SentOn
並不確定檢查行中的錯誤是什么
if (d == date) and ("MAINTENANCE" in msg.body) and ("Upgrade" in msg.Subject) and msg.Sender == "aa@bb.com" :
首先,永遠不要遍歷文件夾中的所有項目——如果沒有 WHERE 子句,你不會在 SQL 中使用 SELECT 語句,對嗎? 始終使用Items.Find/FindNext
或Items.Restrict
。
其次, Sender
不是標量(字符串)屬性 - 它返回一個對象( AddressEntry
),所以你想要的是MailItem.Sender.Address
(在檢查MailItem.Sender
不為空之后)。
第三,除了收件箱文件夾中的MailItem
對象之外,您還可以擁有其他項目,例如MeetingItem
和ReportItem
, ReportItem
可能不會公開您正在訪問的所有屬性(例如Sender
)。 如果您只需要MailItem
對象,請檢查Class
屬性(由所有 OOM 對象公開)== 43 ( OlObjectClass.olMail
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.