import win32com.client as win32
defsend_mail()
: outlook = win32.dispatch(
) mail_item = outlook.createitem(0)
# 0: olmailitem
mail_item.recipients.add(
) mail_item.subject =
'mail test'
mail_item.bodyformat =
2# 2: html format
mail_item.htmlbody =
'''hello guys.
'''mail_item.send(
)if __name__ ==
'__main__'
: send_mail(
)
如果 outlook 有多個賬號,需要選擇賬號傳送郵件,需要在**中對賬號進行判斷,**如下:
def
send_mail()
:)# choose sender account
send_account =
none
if account.displayname ==
: send_account = account
break0)
# 0: olmailitem
# mail_item.sendusingaccount = send_account not working
# the following statement performs the function instead
mail_item._oleobj_.invoke(*(
64209,0
,8,0
, send_account)
) mail_item.recipients.add(
) mail_item.subject =
'test sending using particular account'
mail_item.bodyformat =
2# 2: html format
mail_item.htmlbody =
'''hello guys.
'''mail_item.send(
)if __name__ ==
'__main__'
: send_mail(
)
這裡有點黑魔法,直接設定mail_item.sendusingaccount
不會起作用,返回值是 none, 永遠從第乙個郵箱賬號傳送郵件,我使用的是 office 365 版。需要呼叫_oleobj_.invoke()
方法。後面列出了參考鏈結。
本質上,這種方法是呼叫 com 元件,可以查詢微軟的開發幫助了解相關物件的屬性和方法,比如我想知道 account 的細節,就特意參考了下面這篇幫助: 。com 程式設計與語言無關。另外可以在 outlook 中 alt + f11,進入 vbe 環境,然後 f2 進入物件瀏覽器介面檢視比如下面的介面顯示了 account 的屬性和方法:
python 作為動態語言,通過 debug 獲取 com 物件資訊並不是很方便,比如下面**:
import win32com.client as win32
defprint_outlook_accounts()
:)print
(account.deliverystore.displayname)
if __name__ ==
'__main__'
: send_mail(
)
設定斷點的除錯介面:
我們只知道 account 是乙個 com object,account 包含的資訊很多都是 unknown 的。碰到這種情況,我一般用 c# 或者 vba 編寫**進行除錯。如果我需要詳細了解 account 的屬性和方法,在 office 的任何元件中,比如 excel,寫一段下面的**:
public
sub print_outlook_accounts(
)' 工具 -> 引用:新增 microsoft outook object library 引用
dim accounts as outlook.accounts
dim account as outlook.account
for each account in accounts
debug.print account.displayname
next
endsub
顯示出監視視窗,設定斷點,獲取 accounts 資訊:
在監視視窗新增變數 accounts:
展開:
item 1 和 item 2 表示有兩個賬號,現在我們想看到 item 2 的賬號資訊,將 item 2 展開:
deliverystore
屬性也包含 account 的資訊,可以展開檢視。
使用Python呼叫OUTLOOK發郵件(帶附件)
前置條件 本地安裝了python,匯入了win32com pythoncom等模組。import win32com.client as win32 import warnings import sys import pythoncom reload sys sys.setdefaultencodin...
C 呼叫outlook 傳送郵件
1.這個是呼叫ie mailto 來傳送的,呼叫win api 首先要新增引用using system.runtime.interopservices class mailto 與我聯絡開啟郵箱的類 2 呼叫 ie方法 system.diagnostics.process.start mailto ...
C 呼叫 Outlook傳送郵件例項
新增引用 microsoft.office.interop.outlook using system using system.collections.generic using system.linq using system.text using system.net.mail using sy...