Holen Sie sich die E-Mail-Adresse des aktuellen Benutzers in Outlook 2007
Ich habe ein Outlook-add-in, geschrieben in C#.
Ich Frage mich, wie oder, wenn ich könnte Holen Sie sich die E-Mail-Adresse des aktuellen Benutzers?
Dank
InformationsquelleAutor der Frage electricsheep | 2011-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
Namespace.CurrentUser
: http://msdn.microsoft.com/en-us/library/bb220041(v=office.12).aspxInformationsquelleAutor der Antwort acconrad
Getestet in VS 2010, .NET 4.0, Outlook 2010:
InformationsquelleAutor der Antwort Lee Grissom
Hängt von der definition von "die aktuelle Adresse des Benutzers".
Appication.Session.CurrentUser
(zurückRecipient
Objekt). VerwendenRecipient.Address
Eigenschaft. Beachten Sie jedoch, dass für ein Exchange-Konto (Recipient.AddressEntry.Type == "EX"
), erhalten Sie eine EX-Typ Adresse. Zum abrufen der SMTP-Adresse, verwenden SieRecipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
. Bereit sein zu behandeln null/Ausnahmen im Falle von Fehlern.Auf die Extended MAPI-Ebene (C++ oder Delphi), verwenden Sie
IMAPISession::QueryIdentity
(Sie können es testen, in OutlookSpy - klicken Sie auf IMAPISession-Taste, dann QueryIdentity). Sie können dann diePR_ADDRTYPE
Eigenschaft ("EX" vs "SMTP") undPR_EMAIL_ADDRESS
(wennPR_ADDRTYPE
= "SMTP") oder (im Falle von Exchange)PR_SMTP_ADDRESS
(nicht garantiert) undPR_EMS_AB_PROXY_ADDRESSES
(mehrwertige Eigenschaft Exchange-Adressen, einschließlich aller proxy - (alias -) Adressen).Im Falle von mehreren Konten im Profil eine E-Mail gesendet oder empfangen werden können über mehrere Konten. In diesem Fall verwenden Sie
MailItem.SendUsingAccount
(zurückAccount
- Objekt kann null sein - in diesem Fall mitApplication.Session.CurentUser
). Dies gilt sowohl für empfangen, gesendet oder E-Mails aus (Application.ActiveInspector.CurrentItem
oderApplication.ActiveExplorer.ActiveInlineResponse
).Alle Konten in einem bestimmten Profil zugegriffen werden kann mithilfe des
Namespace.Accounts
Sammlung(Application.Session.Accounts
). Konto-Adresse zugegriffen werden kann, mitAccount.SmtpAddress
Eigenschaft.Beachten Sie, dass die Outlook-Objekt-Modell stellt E-mail-Konten. Einige store-accounts (wie PST) sind nicht in der Auflistung, da Sie nicht haben, eine systeminterne Benutzer-Identität, auch wenn einige andere accounts (z.B. POP3/SMTP) liefern kann, zu speichern. Wenn Sie Zugriff auf alle Konten, die Sie verwenden können, Erlösung und seine RDOSession.Konten Sammlung (RDOAccounts Objekt).
Auf die Extended MAPI-Ebene, die Konten ausgesetzt sind, durch die IOlkAccountManager - Schnittstelle. Sie können mit ihm spielen in OutlookSpy wenn Sie auf die IOlkAccountManager-Taste.
Owner
Eigenschaft.InformationsquelleAutor der Antwort Dmitry Streblechenko
Wenn Sie mit den normalen POP/IMAP-server erhalten Sie die e-mail-Adresse mit:
- Anwendung.Sitzung.CurrentUser.AddressEntry.Adresse;
Mit Exchange Server erhalten Sie die e-mail-Adresse mit:
- Anwendung.Sitzung.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
InformationsquelleAutor der Antwort Jukka-Pekka Jussila
Versuchen
outlookObject.ActiveExplorer().Session.CurrentUser.Address
. Arbeitete für mich auf VS10, Outlook 2007 .NET 4.0InformationsquelleAutor der Antwort Mangesh
Jemand vorbei, ich würde empfehlen mit
Application.Session.CurrentUser.AddressEntry.Address
statt alles mit
Application.ActiveExplorer().Session
als
ActiveExplorer()
zurückkehren könnte eineNullReferenceException
zum Beispiel beim öffnen einer E-Mail über Outlook.InformationsquelleAutor der Antwort Romain Vergnory