web-dev-qa-db-ja.com

.NETで現在のユーザーのメールアドレスを取得する

ユーザーの電子メールアドレスを知りたい(彼女が典型的なWindowsオフィスネットワークにいると仮定して)。これはC#アプリケーションです。おそらく何かの効果に

CurrentUser.EmailAddress; 
37
Calv1n

Windowsドメインの背後にいる場合は、Active Directoryから電子メールアドレスをいつでも取得できます。

以下に例を示します: http://lozanotek.com/blog/articles/149.aspx

5
Ryan

参照 System.DirectoryServices.AccountManagement、その後

using System.DirectoryServices.AccountManagement;
UserPrincipal.Current.EmailAddress

またはタイムアウト付き:

var task = Task.Run(() => UserPrincipal.Current.EmailAddress);
if (task.Wait(TimeSpan.FromSeconds(1)))
    return task.Result;
116
Colonel Panic
// Simply by using UserPrincipal
// Include the namespace - System.DirectoryServices

using DS = System.DirectoryServices;
string CurrUsrEMail = string.Empty;
CurrUsrEMail = DS.AccountManagement.UserPrincipal.Current.EmailAddress;
1
fengfu bon

Active Directoryオプションを使用したくありませんでしたが、他の最も選択された答えは、奇妙なことに十分に機能しませんでした。

私は自分のコードバンクを検索し、これがうまく機能し、迅速な応答でこれを見つけました:

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "[domain]",  dc=xx,dc=yyy"))
{
    UserPrincipal cp = UserPrincipal.FindByIdentity(ctx, Environment.UserName);
    userEmail = cp.EmailAddress;
}
1
BillJam