2012-09-28 15 views
6

He estado usando VBA en cierta medida, el uso de este código:¿Cómo se extraen las direcciones de correo electrónico del campo 'Para' en 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 

Sin embargo, esto da salida como los nombres de las direcciones de correo electrónico y no la dirección de correo electrónico real con el "[email protected]".

Hay un atributo del mailobject que permitirá que las direcciones de correo electrónico y no los nombres se escriban desde el 'To' Textbox.

Gracias

Respuesta

10

Mira la colección de objetos destinatarios de su elemento de correo, lo que debería permitir obtener la dirección: http://msdn.microsoft.com/en-us/library/office/ff868695.aspx


actualización 8/10/2017

Buscando De vuelta en esta respuesta, me di cuenta de que hice algo malo al vincular solo en algún lugar y no proporcionar un poco más de información.

He aquí un fragmento de código a partir de ese enlace de MSDN anterior, que muestra cómo los destinatarios objeto puede ser utilizado para obtener una dirección de correo electrónico (fragmento está en 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

Gracias mucho exactamente lo que necesitaba y muy oportuno demasiado – surfer190

+0

¡Publicación muy útil! – Neophile

Cuestiones relacionadas