Получить адрес электронной почты текущего пользователя в .NET - PullRequest
35 голосов
/ 09 сентября 2011

Я хотел бы знать адрес электронной почты пользователя (при условии, что он находится в типичной офисной сети Windows). Это в приложении C #. Возможно что-то с эффектом

CurrentUser.EmailAddress; 

Ответы [ 4 ]

115 голосов
/ 13 марта 2012

Ссылка 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;
5 голосов
/ 09 сентября 2011

Если вы находитесь за доменом Windows, вы всегда можете извлечь их адрес электронной почты из Active Directory.

Вот пример: http://lozanotek.com/blog/articles/149.aspx

1 голос
/ 31 декабря 2018

Я не хотел использовать опцию 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 голос
/ 28 августа 2018
// Simply by using UserPrincipal
// Include the namespace - System.DirectoryServices

using DS = System.DirectoryServices;
string CurrUsrEMail = string.Empty;
CurrUsrEMail = DS.AccountManagement.UserPrincipal.Current.EmailAddress;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...