2021年12月20日 星期一

用VBScript 讀本地Outlook信件檔案的收件者

這邊紀錄下利用 VBscript 來
  1. 讀取本地端的 Outlook msg 檔案資訊,移如信件的收信者資訊。
  2. 讀取本地 Outlook 收件夾(或刪除的郵件、寄件備份等資料夾)裡的信件資訊。
以下先上程式碼:
<package>
<job id=XXX>

<script language="VBScript">

parOutlookMsgFile("D:\testOutlookMail.msg")
parseOutlookInboxFolder(6)

'''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub parOutlookMsgFile(msgFilePath)
Dim objOutlook
'Dim objInBoxFolder
'Dim objNameSpace

Set objOutlook = CreateObject("Outlook.Application")
'Set objNameSpace = objOutlook.GetNamespace("MAPI")
'Set objInBoxFolder = objNameSpace.GetDefaultFolder(6)

Dim mail, recips, recip, email_single, pa
Set mail = objOutlook.CreateItemFromTemplate(msgFilePath)
Set recips = mail.Recipients

For Each recip In recips
    Set pa = recip.PropertyAccessor
    email_single = pa.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
             
    WScript.Echo "Receiver Name: " & recip.Name & ", Receiver Email: " & email_single & ", type: " & recip.Type
Next
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub parseOutlookInboxFolder(inboxFolderType)
'inboxFolderType:
' received mail inbox: 6
' deleted mail inbox : 3
' sent mail inbox : 5
Dim objOutlook, objInBoxFolder, objNameSpace, objMailItems

Set objOutlook = CreateObject("Outlook.Application")
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objInBoxFolder = objNameSpace.GetDefaultFolder(inboxFolderType)

Set objMailItems = objInBoxFolder.Items
Dim i 
i = 1
Dim totalMailCount
totalMailCount = objMailItems.count
While i <= totalMailCount
		Set objMail = objMailItems.Item(i)
		WScript.Echo objMail.Subject
		i = i + 1
Wend

End Sub

</script>

</job>
</package>

說明:
程式碼中有兩個函式,分別是用來讀取單一 Msg 檔資訊的 parOutlookMsgFile()
和 讀取 Outlook 收件夾(或刪除的郵件、寄件備份等資料夾)裡的信件資訊的 parseOutlookInboxFolder()。

在 parOutlookMsgFile() 中,recip.Type 可能有 1 或 2 兩種值, 
Type = 1 代表一般收件者,
Type = 2 代表 cc 副本的收件者。

parseOutlookInboxFolder() 函式可以接收收件夾 type (OlDefaultFolders 形別) 的值,
其中 6 代表收件夾,
3 代表刪除的郵件,

沒有留言 :

張貼留言