嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何將 Outlook 電子郵件轉成文字檔?


如何將 Outlook 電子郵件轉成文字檔?

嗨,Scripting Guy!如何將 Outlook 電子郵件轉成文字檔?

-- MW

MW,您好。您知道什麼讓 Scripting Guy 最抓狂嗎 (除了其他的 Scripting Guy)?就是:還沒打完招呼就開始找一堆藉口的人:

「對不起搞砸了,但是...」

「我知道這個今天一定要完成,但是...」

「我應該停下來把你拖離失火的房子,但是...」

Scripting Guy 最討厭的就是藉口:能就能,不能就是不能,就這麼簡單。

另一方面來說,如果是特殊聲明,Scripting Guy 的確會聽進去,而要這要看個人的說服力。我們知道如何將 Outlook 電子郵件轉成文字檔嗎?當然,但是您必須瞭解我們只能示範最簡單的作法:把您收信匣理的第一個項目轉成文字檔。萬一您需要更詳盡的解釋,例如將主題中包含特定內容的電子郵件,或是在特定日期傳送的電子郵件轉成文字檔,該如何做?很不巧,無法在今天的專欄為您詳細解說,但如果您想知道如何找出特定的電子郵件,歡迎閱讀《Office Space》專欄中的<篩選 Microsoft Outlook 中的電子郵件>。

另一個藉口,嗯,我是說另一個特殊聲明是沒辦法給您全自動的解決方案,因為 Outlook 有安全性限制。要將電子郵件儲存為文字檔,您必須存取的特定內容 (例如訊息的內文) 可能會引發 Outlook 中的安全性警訊。也就是說,您執行指令碼時,會收到安全性警訊對話方塊。您必須在對話方塊中按下 [確定],指令碼才能繼續執行,訊息也才能儲存 (一定得是實際按下按鈕,不能用 SendKeys 模擬滑鼠按下的動作)。指令碼是能夠運作,但是 (又來啦!) 您不能安排讓指令碼自動執行,必須人在現場以便處理這個對話方塊。

每次都這樣,特殊聲明佔的篇幅好像超過指令碼了。下面的指令碼會將您收信匣內的第一封郵件存成 C:\Scripts\MailMessage.txt:

Const olFolderInbox = 6
Const olTxt = 0
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
Set colMailItems =  objFolder.Items
Set objItem = colMailItems.GetLast()
objItem.SaveAs "C:\Scripts\MailMessage.txt", olTxt

指令碼一開始先連線到本機電腦上的 WMI 服務 (如果要移除遠端電腦上的印表機,稍微修改指令碼即可)。接著利用下面這行指令碼,將本機印表機盡數傳回。對 WMI 而言,只要 Network 屬性設定為 False,就代表本機印表機:我們先是定義一組常數:olFolderInbox (值為 6),用來指定要連接的 Outlook 資料夾;olTxt (值為 0),告訴 Outlook 用哪種格式儲存電子郵件。這樣就有三行指令碼,能夠連接到 Outlook 和 MAPI 命名空間,並利用 GetDefaultFolder 繫結至 [收件匣] 資料夾:

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)

成功連上 [收件匣] 後,剩下來的就簡單了。我們使用這行程式碼將 [收件匣] 內所有項目的集合傳回。

Set colMailItems =  objFolder.Items

得到集合後,使用 GetLast() 方法來繫結至項目中的第一個集合 (也就是 [收件匣] 內的第一封電子郵件 )。接著再呼叫 SaveAs 方法,儲存訊息並將一對參數傳給 SaveAs:文字檔的完整路徑 (C:\Scripts\MailMessage.txt) 還有常數 olTxt。

直接了當,而且毫無藉口,就對 Scripting Guy 的胃口。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首