Get current user's email address in .NET

2019-03-14 07:29发布

I would like to know the email address of the user (assuming she's in a typical Windows office network). This is in a C# application. Perhaps something to the effect of

CurrentUser.EmailAddress; 

4条回答
We Are One
2楼-- · 2019-03-14 07:45

I didn't want to use the Active Directory option and the other, most selected answer, did not work for me oddly enough.

I searched my code bank and found this which worked fine and with quick response:

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "[domain]",  dc=xx,dc=yyy"))
{
    UserPrincipal cp = UserPrincipal.FindByIdentity(ctx, Environment.UserName);
    userEmail = cp.EmailAddress;
}
查看更多
干净又极端
3楼-- · 2019-03-14 07:48

Reference System.DirectoryServices.AccountManagement, then

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

Or with a timeout:

var task = Task.Run(() => UserPrincipal.Current.EmailAddress);
if (task.Wait(TimeSpan.FromSeconds(1)))
    return task.Result;
查看更多
SAY GOODBYE
4楼-- · 2019-03-14 07:53
// Simply by using UserPrincipal
// Include the namespace - System.DirectoryServices

using DS = System.DirectoryServices;
string CurrUsrEMail = string.Empty;
CurrUsrEMail = DS.AccountManagement.UserPrincipal.Current.EmailAddress;
查看更多
Explosion°爆炸
5楼-- · 2019-03-14 07:54

If you're behind a Windows domain, you could always grab their email address out of Active Directory.

Here's an example: http://lozanotek.com/blog/articles/149.aspx

查看更多
登录 后发表回答