2012-09-28 75 views
6

我一直在使用VBA在一定程度上,使用此代碼:如何從Outlook的「收件人」字段中提取電子郵件地址?

Sub ExtractEmail() 
Dim OlApp As Outlook.Application 
Dim Mailobject As Object 
Dim Email As String 
Dim NS As NameSpace 
Dim Folder As MAPIFolder 
Set OlApp = CreateObject("Outlook.Application") 
' Setup Namespace 
Set NS = ThisOutlookSession.Session 
' Display select folder dialog 
Set Folder = NS.PickFolder 
' Create Text File 
Set fs = CreateObject("Scripting.FileSystemObject") 
Set a = fs.CreateTextFile("c:\mydocuments\emailss.txt", True) 
' loop to read email address from mail items. 
For Each Mailobject In Folder.Items 
    Email = Mailobject.To 
    a.WriteLine (Email) 
Next 
Set OlApp = Nothing 
Set Mailobject = Nothing 
a.Close 
End Sub 

但是這給作爲電子郵件地址的名稱,而不是實際的電子郵件地址與"[email protected]"輸出。

是否有一個mailobject的屬性將允許電子郵件地址,而不是從'To'文本框中寫入名稱。

感謝

回答

10

退房收件人集合對象爲你的郵件項目,這應該讓你得到地址:http://msdn.microsoft.com/en-us/library/office/ff868695.aspx


更新2017年8月10日

展望回到這個答案,我意識到我做了一件壞事,只在某處連接而沒有提供更多信息。

下面是從MSDN鏈接代碼段以上,說明如何將受助對象可以用來獲得一個電子郵件地址(段是在VBA):

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 
+1

非常感謝正是我需要的和非常及時的太 – surfer190

+0

非常有幫助的職位! – Neophile

相關問題