usuario remitente quitar puede otro nombre enviar electronico direccion cuenta correo con como cambiar c# .net exchange-server outlook-addin office-2007

c# - remitente - Obtenga la dirección de correo electrónico del usuario actual en Outlook 2007



enviar correo con otro remitente outlook 2010 (6)

Tengo un complemento de Outlook escrito en C #.

Me preguntaba cómo o si podría obtener la dirección de correo electrónico del usuario actual.

Gracias


Cualquiera que pase, recomendaría encarecidamente que use Application.Session.CurrentUser.AddressEntry.Address lugar de cualquier cosa que use Application.ActiveExplorer().Session , ya que ActiveExplorer() puede devolver una NullReferenceException , por ejemplo, al abrir un correo electrónico a través de Outlook.


Depende de la definición de "la dirección de usuario actual".

  1. La dirección de la cuenta principal en Outlook se puede recuperar de Appication.Session.CurrentUser (devuelve el objeto Recipient ). Usa la propiedad Recipient.Address . Sin embargo, tenga en cuenta que para una cuenta de Exchange ( Recipient.AddressEntry.Type == "EX" ) recibirá una dirección de tipo EX. Para recuperar la dirección SMTP, use Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress . Esté preparado para manejar nulos / excepciones en caso de errores.

En el nivel MAPI extendido (C ++ o Delphi), use IMAPISession::QueryIdentity (puede probarlo en OutlookSpy ; haga clic en el botón IMAPISession, luego en QueryIdentity). Luego puede leer la propiedad PR_ADDRTYPE ("EX" vs "SMTP") y PR_EMAIL_ADDRESS (cuando PR_ADDRTYPE = "SMTP") o (en el caso de Exchange) PR_SMTP_ADDRESS (no se garantiza que esté presente) y PR_EMS_AB_PROXY_ADDRESSES (propiedad multivaluada) incluyendo todas las direcciones proxy (alias)).

  1. En el caso de varias cuentas en el perfil, se puede enviar o recibir un correo electrónico a través de varias cuentas. En ese caso, use MailItem.SendUsingAccount (devuelve el objeto Account , puede ser nulo; en ese caso, use Application.Session.CurentUser ). Esto es válido tanto para los correos electrónicos recibidos, enviados o compuestos ( Application.ActiveInspector.CurrentItem o Application.ActiveExplorer.ActiveInlineResponse ).

  2. Se puede acceder a todas las cuentas en un perfil determinado utilizando la colección de Namespace.Accounts (Application.Session.Accounts ). Se puede acceder a la dirección de la cuenta utilizando la propiedad Account.SmtpAddress . Tenga en cuenta que el modelo de objetos de Outlook solo expone las cuentas de correo. Algunas cuentas de la tienda (como PST) no están en la colección, ya que no tienen una identidad de usuario intrínseca, incluso si otras cuentas (como POP3 / SMTP) pueden entregar a esa tienda. Si desea acceder a todas las cuentas, puede usar Redemption y su colección RDOSession .Accounts (objeto RDOAccounts ).

En el nivel MAPI extendido, las cuentas se exponen a través de la interfaz IOlkAccountManager . Puedes jugar con él en OutlookSpy si haces clic en el botón IOlkAccountManager.

  1. En el caso de delegar almacenes de Exchange, el propietario de la tienda no está expuesto a través del Modelo de objetos de Outlook. Puede usar MAPI extendido (tenga en cuenta que la propiedad PR_MAILBOX_OWNER_ENTRYID solo está expuesta por la tienda en línea, no está disponible en una tienda en caché). Puede analizar el ID de entrada del almacén de Exchange y extraer la dirección de tipo EX de este. A continuación, puede construir el ID de entrada de objeto GAL dada la dirección EX. También puede acceder al propietario de la tienda utilizando Redemption y su objeto RDOExchangeMailboxStore y su propiedad Owner .

Probado en VS 2010, .NET 4.0, Outlook 2010:

var emailAddress = this.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;


Pruebe outlookObject.ActiveExplorer().Session.CurrentUser.Address . Me funcionó en VS10, Outlook 2007, .NET 4.0


Si está utilizando el servidor POP / IMAP normal, obtiene la dirección de correo electrónico con: Application.Session.CurrentUser.AddressEntry.Address;

Con Exchange Server, obtiene la dirección de correo electrónico con: Application.Session.CurrentUser.AddressEntry.GetExchangeUser (). PrimarySmtpAddress;