我在 Excel 中有一個名為 To 和 Cc 標題的 2 列。實際上,我需要提取到和抄送電子郵件 ID,而不是使用 VBA 代碼從 Outlook 中的 Excel 檔案中命名。
Sub ExportOutlookInfo()
Dim o As Outlook.Application
Set o = New Outlook.Application
Dim ons As Outlook.Namespace
Set ons = o.GetNamespace("MAPI")
Dim omail As Outlook.MailItem
Set omail = o.CreateItem(olMailItem)
Dim i As Long
Dim olRecip As Outlook.Recipient
Dim olRecipAddress As String
Dim SENT_FLDR As MAPIFolder
Dim Items As Outlook.Items
Set SENT_FLDR = ons.GetDefaultFolder(olFolderSentMail)
Set Items = SENT_FLDR.Items
Dim recp As Outlook.Application
For i = Items.Count To 1 Step -1
DoEvents
For Each olRecip In Items(i).Recipients
Debug.Print olRecip.Address
Next olRecip
Next i
End Sub
請幫助我。
先感謝您!
uj5u.com熱心網友回復:
使用類的Recipients
屬性MailItem
獲取收件人電子郵件地址。使用Outlook 收件人和收件人集合 - 開發人員指南一文解釋了如何處理收件人。如果您需要獲取收件人的電子郵件地址,您可以使用以下呼叫順序:
Recipient.AddressEntry.Address
類的Address
屬性AddressEntry
回傳一個字串,表示AddressEntry
.
如果 AddressEntry 屬于諸如全域地址串列 (GAL) 之類的 Exchange 物件并且對應于 Exchange 用戶,您還可以找到該類的GetExchangeUser方法,該方法AddressEntry
回傳表示 AddressEntry 的ExchangeUser物件。AddressList
該類ExchangeUser
提供了我想您正在尋找的PrimarySmtpAddress屬性。在操作方法:將基于 Exchange 的電子郵件地址轉換為 SMTP 電子郵件地址一文中閱讀有關轉換電子郵件地址的更多資訊。
還有另一種獲取收件人的 SMTP 地址的方法。以下GetSMTPAddressForRecipients
方法將 aMailItem
作為輸入引數,然后顯示該郵件專案的每個收件人的 SMTP 地址。該方法首先檢索Recipients
表示為郵件項指定的收件人集的集合。對于Recipient
該Recipients
集合中的每個,該方法獲取與該PropertyAccessor
物件對應的Recipient
物件,并使用PropertyAccessor
獲取https://schemas.microsoft.com/mapi/proptag/0x39FE001E
映射到收件人的 SMTP 地址的 MAPI 屬性的值。
Sub GetSMTPAddressForRecipients(mail As Outlook.MailItem)
Dim recips As Outlook.Recipients
Dim recip As Outlook.Recipient
Dim pa As Outlook.PropertyAccessor
Const PR_SMTP_ADDRESS As String = _
"http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Set recips = mail.Recipients
For Each recip In recips
Set pa = recip.PropertyAccessor
Debug.Print recip.name & " SMTP=" _
& pa.GetProperty(PR_SMTP_ADDRESS)
Next
End Sub
uj5u.com熱心網友回復:
假設您正在訪問To
andCC
屬性(其中包含;
分隔的顯示名稱串列,可能包含也可能不包含電子郵件地址),您需要一次提取一個地址 - 遍歷MailItem.Recipients
集合,然后對于每個Recipient
物件,檢查Recipient.Type
屬性 (可以是olTo
, olCC
, olBCC
)。然后,您可以讀取該Recipient.Address
屬性。
請注意,對于 Exchange 收件人(地址型別,"EX"
而不是"SMTP"
),您最終會得到 EX 地址。PR_ADDRTYPE
如果您總是想要一個 SMTP 地址,請通過使用 讀取(DASL 名稱"http://schemas.microsoft.com/mapi/proptag/0x3002001F"
)MAPI 屬性來檢查您的地址型別是否正確Recipient.PropertyAccessor.GetProperty
。如果是“SMTP”,Recipient.Address
則只需要屬性即可。如果是“EX”,請嘗試讀取PR_SMTP_ADDRESS
MAPI 屬性(DASL 名稱"http://schemas.microsoft.com/mapi/proptag/0x39FE001F"
)。如果它丟失,你最后的手段將是Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
(昂貴并且可能引發錯誤)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/467241.html