Obtenir l'adresse e-mail de l'utilisateur actuel dans Outlook 2007
J'ai un complément Outlook écrit en C#.
Je me demandais comment ou si j'ai pu obtenir l'adresse email de l'utilisateur courant?
Grâce
source d'informationauteur electricsheep | 2011-01-21
Vous devez vous connecter pour publier un commentaire.
Utilisation
Namespace.CurrentUser
: http://msdn.microsoft.com/en-us/library/bb220041(v=office.12).aspxTesté dans VS 2010, .NET 4.0, Outlook 2010:
Dépend de la définition de "l'utilisateur actuel de l'adresse".
Appication.Session.CurrentUser
(renvoieRecipient
objet). UtilisationRecipient.Address
de la propriété. Notez, cependant, que pour un compte Exchange (Recipient.AddressEntry.Type == "EX"
), vous recevrez un EX de type adresse. Pour récupérer l'adresse SMTP, utilisezRecipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
. Être préparé à gérer les valeurs null/exceptions en cas d'erreurs.Sur les MAPI Étendu de niveau (C++ ou Delphi), l'utilisation
IMAPISession::QueryIdentity
(vous pouvez le tester dans OutlookSpy - cliquez sur IMAPISession bouton, puis QueryIdentity). Vous pouvez ensuite lire lePR_ADDRTYPE
de propriété ("EX" vs "SMTP") etPR_EMAIL_ADDRESS
(quandPR_ADDRTYPE
= "SMTP") ou (en cas d'Échange)PR_SMTP_ADDRESS
(de ne pas être présent) etPR_EMS_AB_PROXY_ADDRESSES
(valeurs multiples de la propriété de l'Échange des adresses, y compris tous les proxy (alias) adresses).En cas de pluralité de comptes dans le profil, un email peut être envoyé ou reçu par le biais de multiples comptes. Dans ce cas, l'utilisation
MailItem.SendUsingAccount
(renvoieAccount
objet, peut être null dans ce cas, l'utilisationApplication.Session.CurentUser
). Ceci est valable à la fois pour les reçus, envoyés ou les e-mails étant composé (Application.ActiveInspector.CurrentItem
ouApplication.ActiveExplorer.ActiveInlineResponse
).Tous les comptes dans un profil peut être consulté à l'aide de la
Namespace.Accounts
collection(Application.Session.Accounts
). Du compte de l'adresse peut être consulté à l'aide deAccount.SmtpAddress
de la propriété.Notez que le Modèle d'Objet Outlook expose uniquement les comptes de messagerie. Certains comptes d'achats (comme PST) ne sont pas dans la collection, car ils n'ont pas une valeur intrinsèque de l'identité de l'utilisateur, même si certains autres comptes (tels que POP3/SMTP) peut fournir à ce magasin. Si vous souhaitez accéder à tous les comptes, vous pouvez utiliser Rachat et ses RDOSession.Les comptes de la collection (RDOAccounts objet).
Sur les MAPI Étendu de niveau, les comptes sont exposés par le biais de la IOlkAccountManager interface. Vous pouvez jouer avec elle dans OutlookSpy si vous cliquez sur le IOlkAccountManager bouton.
Owner
propriété.Si vous utilisez la normale serveur POP/IMAP, vous obtenez l'adresse e-mail:
Application.Session.CurrentUser.AddressEntry.Adresse;
Avec Exchange Server, vous recevez l'e-mail avec:
Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
Essayer
outlookObject.ActiveExplorer().Session.CurrentUser.Address
. A fonctionné pour moi sur VS10, Outlook 2007 .NET 4.0N'importe qui passant par, je serais fortement des conseils à l'aide de
Application.Session.CurrentUser.AddressEntry.Address
au lieu de quoi que ce soit à l'aide de
Application.ActiveExplorer().Session
comme
ActiveExplorer()
peut retourner unNullReferenceException
, par exemple lors de l'ouverture d'un mail via Outlook.