簡體   English   中英

監控通過 Python win32.Dispatch('Outlook.Application') 發送的電子郵件?

[英]Monitor E-mail sent via Python win32.Dispatch('Outlook.Application')?

我在使用以下解決方案時遇到了一些麻煩,我創建了一個 function,它通過 Outlook 發送電子郵件,使用 win32 ZEFE90A8E604A7C840E88D03A67F6B7 在其中阻止了 I8D03A67F6B7 工作。 function 本身就像一個魅力:

def sendEmail(emailTo, emailCC, emailSubject, emailAttach, emailBody):
    for item in psutil.pids():
        if psutil.pid_exists(item):
            p = psutil.Process(item)
            if p.name() == 'OUTLOOK.EXE':
                os.system('taskkill /f /im OUTLOOK.EXE')
                break
            
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.Subject = emailSubject
    mail.To = emailTo
    mail.CC = emailCC
    #mail.Body = emailBody
    mail.HTMLBody = emailBody
    if not emailAttach:
        print('No Attachements...\n')
    else:
        print('Attaching files...\n')
        for i in range(0, len(emailAttach)):
            mail.Attachments.Add(emailAttach[i])
    mail.Send()
    time.sleep(30)

這里的問題是,有時我們需要在 for 循環中向不同的人發送多封不同的電子郵件,但是由於代碼比電子郵件創建速度更快,有時它會失敗,我想知道是否有適合我的方法要監視電子郵件是否完成,據我所知,在任務欄上它會在創建和發送電子郵件時打開一個帶有齒輪的 outlook。 這里的要點是我是否有一種方法可以監控電子郵件何時創建並確實發送給我以繼續下一個項目。

我強迫等待 30 秒的睡眠,但我確信有更好、更 Python 的方式來做到這一點。

Email 提交本質上是異步的。 即使 Outlook 成功發送了一條消息,目標郵箱也可能不再存在,您有時會在數小時后收到 NDR。

如果MailItem.Send沒有出錯,這是您能做的最好的事情。

為確保 email 被處理並發送出去,您可以處理Items class 的ItemAdd事件,當一個或多個項目添加到指定集合時會觸發它。 默認情況下,Outlook 將已發送項目的副本放入已Sent Items文件夾。 MailItem.SaveSentMessageFolder屬性指定了一個Folder object,它表示 email 消息的副本在發送后將保存在其中的文件夾。 因此,您可以查看消息的發送時間。

從外部應用程序使用 Send 方法的另一個方面是安全性。 如果 Outlook object model 引發安全問題,您可能會在Send行上遇到錯誤。 For example, in Microsoft Outlook 2019, Outlook for Office 365, Outlook 2016, and Outlook 2013, when you send an email message from another program such as Microsoft Excel, you receive the following warning message:

一個程序正試圖代表您發送一封電子郵件。 如果這是意外情況,請單擊拒絕並確認您的防病毒軟件是最新的。

但也有機會在運行時在Send行上獲得異常。 很可能就是這樣!

在 Outlook 文章中的 A 程序試圖代表您發送電子郵件警告中閱讀有關此內容的更多信息。

暫無
暫無

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

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