OutlookのアドインをC#で記述しています。
現在のユーザーのメールアドレスを取得するにはどうすればよいのでしょうか。
ありがとう
使用する Namespace.CurrentUser
: http://msdn.Microsoft.com/en-us/library/bb220041(v = office.12).aspx
VS 2010、.NET 4.0、Outlook 2010でテスト済み:
var emailAddress = this.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
「現在のユーザーアドレス」の定義によって異なります。
Appication.Session.CurrentUser
_から取得できます(Recipient
オブジェクトを返します)。 _Recipient.Address
_プロパティを使用します。ただし、Exchangeアカウント(_Recipient.AddressEntry.Type == "EX"
_)の場合は、EXタイプのアドレスを受け取ることに注意してください。 SMTPアドレスを取得するには、Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
を使用します。エラーが発生した場合にnull /例外を処理できるように準備してください。拡張MAPIレベル(C++またはDelphi)では、_IMAPISession::QueryIdentity
_を使用します( OutlookSpy --IMAPISessionボタンをクリックしてからQueryIdentityをクリックします)。次に、_PR_ADDRTYPE
_プロパティ( "EX" vs "SMTP")および_PR_EMAIL_ADDRESS
_(_PR_ADDRTYPE
_ = "SMTP"の場合)または(Exchangeの場合)_PR_SMTP_ADDRESS
_を読み取ることができます。 (存在することが保証されていません)および_PR_EMS_AB_PROXY_ADDRESSES
_(複数値のプロパティは、すべてのプロキシ(エイリアス)アドレスを含むアドレスを交換します)。
プロファイルに複数のアカウントがある場合、複数のアカウントを介して電子メールを送受信できます。その場合は_MailItem.SendUsingAccount
_を使用します(Account
オブジェクトを返します。nullの場合もあります。その場合は_Application.Session.CurentUser
_を使用してください)。これは、受信、送信、または作成中の電子メール(_Application.ActiveInspector.CurrentItem
_または_Application.ActiveExplorer.ActiveInlineResponse
_)の両方に有効です。
特定のプロファイル内のすべてのアカウントには、_Namespace.Accounts
_コレクション_(Application.Session.Accounts
_)を使用してアクセスできます。アカウントのアドレスには、_Account.SmtpAddress
_プロパティを使用してアクセスできます。 Outlookオブジェクトモデルはメールアカウントのみを公開することに注意してください。一部のストアアカウント(PSTなど)は、他のアカウント(POP3/SMTPなど)がそのストアに配信できる場合でも、固有のユーザーIDを持たないため、コレクションに含まれていません。すべてのアカウントにアクセスする場合は、 Redemption とその RDOSession 。Accountsコレクション( RDOAccounts オブジェクト)を使用できます。
拡張MAPIレベルでは、アカウントは IOlkAccountManager インターフェイスを介して公開されます。 IOlkAccountManagerボタンをクリックすると、 OutlookSpy で遊ぶことができます。
Owner
プロパティ。通常のPOP/IMAPサーバーを使用している場合は、次の電子メールアドレスを取得します。Application.Session.CurrentUser.AddressEntry.Address;
Exchange Serverでは、次のコマンドで電子メールアドレスを取得します。Application.Session.CurrentUser.AddressEntry.GetExchangeUser()。PrimarySmtpAddress;
通りすがりの人は、Application.ActiveExplorer().Session
を使用する代わりに_Application.Session.CurrentUser.AddressEntry.Address
_を使用することを強くお勧めします。たとえば、ActiveExplorer()
はNullReferenceException
を返す可能性があるためです。 Outlook経由の電子メール。
outlookObject.ActiveExplorer().Session.CurrentUser.Address
を試してください。 VS10、Outlook 2007、.NET4.0で私のために働いた