2014-01-30 95 views
1

使用win32com.client包,我可以通過Python使用Outlook發送HTML電子郵件。但是,我很難找出如何標記電子郵件「高優先級」或「高度重要」。使用Python通過Outlook發送高重要性的電子郵件

下面是我用成功發送電子郵件(沒有優先級標記)代碼:

RTFTEMPLATE = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<HTML> 
<HEAD> 
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; = 
charset=3Dus-ascii"> 
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version = 
08.00.0681.000"> 
<TITLE>%s</TITLE> 
</HEAD> 
<BODY> 
<!-- Converted from text/rtf format --> 

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT = 
FACE="Times New Roman"> 
%s 
</FONT></SPAN><SPAN = 
LANG=3D"en-us"></SPAN></P> 
<br> 
%s 
</BODY> 
</HTML>""" 

Format = { 'UNSPECIFIED' : 0, 'PLAIN' : 1, 'HTML' : 2, 'RTF' : 3} 
profile = "Outlook" 


#session = win32com.client.Dispatch("Mapi.Session") 
outlook = win32com.client.Dispatch("Outlook.Application") 
#session.Logon(profile) 
mainMsg = outlook.CreateItem(0) 
mainMsg.To = "RECIPIENT" 
mainMsg.Subject = subject 
mainMsg.BodyFormat = Format['RTF'] 
mainMsg.HTMLBody = RTFTEMPLATE % (subject,html,bad_table) 
mainMsg.Send() 

回答

2

您正通過COM Outlook Object Model創建您的消息。這個模型是完整的文件,這可以在這種情況下很好的幫助。

例如,您正在創建的MailItem記錄爲here。從該頁面可以看出,它有一個屬性Importance,您可以將其設置爲2(olImportanceHigh)以將郵件標記爲「高度重要」。

在代碼

mainMsg.Importance = 2 
+0

非常感謝!我正在尋找該關鍵字:Outlook對象模型。在半相關說明中,widows任務調度程序似乎不喜歡win32com python腳本。 Outlook將發出一條錯誤消息,內容爲「我們無法啓動您的程序」。如果你沒有線索,我會開始另一個問題線索。 Thansl Paul-Jan 編輯:看起來像是因爲Python試圖打開Outlook的另一個實例。至少這是我的最佳猜測。 – chungsangh

1

爲了紀念,這樣它認作展望「高優先級」的消息,加下面一行到郵件標頭:

X-Priority: 1 

但是,我不能告訴你如何通過方式行添加到郵件頭所使用的組件。

+0

嗯......這是哪裏出了問題,我來了。我不太熟悉Python調用Windows應用程序(我根據研究示例編寫了我的代碼,而不是基本原理),所以我不知道從哪裏開始......我有什麼建議可以開始看着? – chungsangh

+0

我不確定你必須調用一個Windows應用程序(Outlook)來做你正在做的事情。換句話說,我不認爲你必須通過編程來發送消息,因爲你想發送帶有'高優先級'屬性的消息。您可以簡單地通過常規方式(通過電子郵件包)從python發送消息,並將上面的行包含在消息標題中。下面是一個示例,該鏈接顯示瞭如何自定義郵件標題:http://docs.python.org/2/library/email-examples.html – mti2935

+0

有趣。這似乎是更健壯的解決方案。我得花一些時間才能研究它。感謝您的幫助 – chungsangh

相關問題