簡體   English   中英

如何使用python獲取收到的Outlook郵件的日期和時間並檢查來自特定發件人的正文

[英]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/FindNextItems.Restrict

其次, Sender不是標量(字符串)屬性 - 它返回一個對象( AddressEntry ),所以你想要的是MailItem.Sender.Address (在檢查MailItem.Sender不為空之后)。

第三,除了收件箱文件夾中的MailItem對象之外,您還可以擁有其他項目,例如MeetingItemReportItemReportItem可能不會公開您正在訪問的所有屬性(例如Sender )。 如果您只需要MailItem對象,請檢查Class屬性(由所有 OOM 對象公開)== 43 ( OlObjectClass.olMail )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM