2012-09-28 16 views
6

Sono stato con VBA in una certa misura, utilizzando questo codice:Come estrai gli indirizzi email dal campo "A" in 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 

Tuttavia, questo dà uscita come i nomi degli indirizzi e-mail e non l'indirizzo di posta elettronica reale con il "[email protected]".

Esiste un attributo dell'oggetto di posta che consentirà gli indirizzi di posta elettronica e non i nomi da scrivere dalla casella di testo 'To'.

Grazie

risposta

10

estrarre l'oggetto insieme Recipients per il vostro elemento di posta elettronica, che dovrebbe consentire di ottenere l'indirizzo: http://msdn.microsoft.com/en-us/library/office/ff868695.aspx


aggiornamento 8/10/2017

Guardando su questa risposta, mi sono reso conto che ho fatto una brutta cosa collegando solo da qualche parte e non fornendo un po 'più di informazioni.

Ecco un frammento di codice da quel collegamento MSDN sopra, che mostra come i destinatari oggetto può essere utilizzato per ottenere un indirizzo di posta elettronica (frammento è in 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

Grazie mille esattamente quello che mi serviva e di grande attualità anche – surfer190

+0

Post molto utile! – Neophile

Problemi correlati