2011-06-02 15 views
9

En mi complemento VSTO Outlook 2007, puedo obtener la dirección de correo electrónico de un destinatario que es un usuario de intercambio. Pero cuando tengo el siguiente caso, no me devuelve el correo smtp:Obteniendo la dirección de correo electrónico de un destinatario que es un usuario de intercambio

  1. Agregue un nuevo elemento de contacto de Outlook (en contactos de Outlook).
  2. La dirección de correo electrónico de este elemento de contacto debe ser un correo electrónico de un usuario de intercambio (cualquier persona de su organización, pero que es un usuario de intercambio).
  3. Ahora cuando selecciono este contacto de Outlook como destinatario de correo electrónico y en el evento de envío de elemento no puedo obtener la dirección SMTP.

A continuación es mi código:

Recipient r = mailItem.Recipients[i]; 
r.Resolve(); 
//Note, i have different conditions that check the AddressEntryUserType of recipient's 
//address entry object. All other cases work fine. In this case this is 
//olOutlookContactAddressEntry. 
//I have tried the following: 

ContactItem cont = r.AddressEntry.GetContact(); 
string email = cont.Email1Address; 
string emailtmp = r.AddressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x800F101E") as string; 

Puede alguien por favor me ayude en lo que la propiedad que debe utilizar en este caso para obtener el correo electrónico SMTP?

+0

También estoy teniendo este problema y no puede obtener una dirección SMTP de los destinatarios en un elemento de correo electrónico o una cita. Puedo obtener una dirección que solo se ve así: 'Address ="/o = INCORPORATION/ou = Grupo administrativo de intercambio (XXXXXXXXXXXX)/cn = Destinatarios/cn = username "' – kavun

Respuesta

0

Si recuerdo correctamente, hubo varias instancias en las que las direcciones de correo electrónico no se resolverían a menos que AHORRE el elemento que se envía primero. Puedes intentar eso. Además, ¿no recibe ningún mensaje de "violación de seguridad" que le pida permiso para acceder a la libreta de direcciones del usuario o le ha impedido/trabajado todo eso? Tuve muchos problemas con eso que terminaron requiriendo usar Redemption para Outlook.

+0

En realidad, no estoy accediendo a la libreta de direcciones de Outlook. Este es el objeto de destinatario del elemento de correo al que estoy intentando acceder a la dirección de correo electrónico. Además, el elemento de contacto ya está guardado antes de acceder a la dirección de correo electrónico del destinatario. –

4

He encontrado una forma de utilizar el elemento ExchangeUser y resolver la dirección smtp a través de ese objeto. Este post ayudó - Get Smtp email from ContactInfo stored in Exchange

foreach (Outlook.Recipient recipient in currentAppointment.Recipients) 
    { 
     Outlook.ExchangeUser exchangeUser = recipient.AddressEntry.GetExchangeUser(); 
     string smtpAddress; 
     if (exchangeUser != null) 
     { 
      smtpAddress = exchangeUser.PrimarySmtpAddress; 
     } 
     else 
     { 
      smtpAddress = recipient.Address; 
     } 
    } 
+1

GetExchangeUser() requiere una conexión de intercambio persistente –

+1

Tengo un contacto de Exchange donde GetExchangeUser devuelve nulo. Aún el destinatario. La dirección tiene este wirde/o = FIRM/ou = Some Group/cn = f.name. – lokimidgard

Cuestiones relacionadas