2011-02-18 28 views
8

Estoy intentando obtener la dirección de correo electrónico escrita en el campo To de una ventana de redacción de correo.Outlook: ¿cómo obtener el correo electrónico del campo Destinatario?

Intento obtener la propiedad Dirección de un destinatario, que según VS, debería darme el correo electrónico.

Estoy recibiendo en cambio una cadena que tiene el siguiente aspecto:

"/c=US/a=att/p=Microsoft/o=Finance/ou=Purchasing/s=Furthur/g=Joe" 

¿Cómo puedo obtener la dirección de correo electrónico en el campo del destinatario?

Mi código hasta ahora:

List <string> emails = new List<string>(); 

if (thisMailItem.Recipients.Count > 0) 
{ 
    foreach (Recipient rec in thisMailItem.Recipients) 
    { 
     emails.Add(rec.Address); 
    } 
} 
return emails; 

Respuesta

5

¿Se puede probar esto?

emails.Add(rec.AddressEntry.Address); 

Reference link

EDIT:

no tengo el entorno adecuado para probar así que sólo estoy adivinando todo esto, pero ¿qué hay de

string email1Address = rec.AddressEntry.GetContact().Email1Address; 

o .Email2Adress o .Email3Address

También hay,

rec.AddressEntry.GetExchangeUser().Address 

que es posible que desee probar.

+0

Lo he intentado, y rec.Address y rec.AddressEntry.Address devuelven lo mismo. maullar. – Cat

+0

¿Alguna suerte? miau –

+2

GetExchangeUser(). PrimarySmtpAddress fue la respuesta :) cuando hay múltiples tipos de 'direcciones' registradas para el usuario, la propiedad Dirección se predetermina a otras cosas además del correo electrónico, por lo que debe especificar qué tipo de dirección. ¡Gracias por intentarlo! – Cat

2

también tiene SMTPAddress propiedad que expone la dirección SMTP principal del usuario.

+1

Para referencia futura, en VS2010 es rec.AddressEntry.GetExchangeUser(). PrimarySMTPAddress –

0

No sé si esto ayuda o cómo precisa

it is, a sample 

    private string GetSmtp(Outlook.MailItem item) 
     { 
      try 
      { 
       if (item == null || item.Recipients == null || item.Recipients[1] == null) return ""; 
       var outlook = new Outlook.Application(); 
       var session = outlook.GetNamespace("MAPI"); 
       session.Logon("", "", false, false); 
       var entryId = item.Recipients[1].EntryID; 
       string address = session.GetAddressEntryFromID(entryId).GetExchangeUser().PrimarySmtpAddress; 
       if (string.IsNullOrEmpty(address)) 
       { 
        var rec = item.Recipients[1]; 
        var contact = rec.AddressEntry.GetExchangeUser(); 
        if (contact != null) 
         address = contact.PrimarySmtpAddress; 
       } 
       if (string.IsNullOrEmpty(address)) 
       { 
        var rec = item.Recipients[1]; 
        var contact = rec.AddressEntry.GetContact(); 
        if (contact != null) 
         address = contact.Email1Address; 
       } 
       return address; 
      } 
      finally 
      { 

      } 
     } 
+0

Explique esto. – Roecrew

2

Prueba este

private string GetSMTPAddressForRecipients(Recipient recip) 
     { 
      const string PR_SMTP_ADDRESS = 
       "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"; 

      PropertyAccessor pa = recip.PropertyAccessor; 
      string smtpAddress = pa.GetProperty(PR_SMTP_ADDRESS).ToString(); 
      return smtpAddress; 

     } 

Este servicio está disponible en MSDN here

He utilizado la misma manera para obtener el correo electrónico direcciones en mi aplicación y su funcionamiento.

Cuestiones relacionadas