web-dev-qa-db-fra.com

Obtenir l'adresse électronique de l'utilisateur actuel dans .NET

J'aimerais connaître l'adresse électronique de l'utilisateur (en supposant qu'elle se trouve dans un réseau de bureau Windows typique). Ceci est dans une application C #. Peut-être quelque chose à l'effet de

CurrentUser.EmailAddress; 
32
Calv1n

Si vous êtes derrière un domaine Windows, vous pouvez toujours extraire leur adresse électronique d'Active Directory.

Voici un exemple: http://lozanotek.com/blog/articles/149.aspx

5
Ryan

Référence System.DirectoryServices.AccountManagement, puis

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

Ou avec un délai d'attente:

var task = Task.Run(() => UserPrincipal.Current.EmailAddress);
if (task.Wait(TimeSpan.FromSeconds(1)))
    return task.Result;
105
Colonel Panic

Je ne voulais pas utiliser l'option Active Directory et l'autre, la réponse la plus sélectionnée, ne fonctionnait pas assez étrangement pour moi.

J'ai cherché dans ma banque de code et j'ai trouvé ceci qui fonctionnait bien et avec une réponse rapide:

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "[domain]",  dc=xx,dc=yyy"))
{
    UserPrincipal cp = UserPrincipal.FindByIdentity(ctx, Environment.UserName);
    userEmail = cp.EmailAddress;
}
1
BillJam
// Simply by using UserPrincipal
// Include the namespace - System.DirectoryServices

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