System.DirectoryServices
名前空間でさまざまなクラスを使用すると、次のような解決策があります。
string username = "username";
string domain = "domain";
List<string> emailAddresses = new List<string>();
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, domain);
UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, username);
// Add the "mail" entry
emailAddresses.Add(user.EmailAddress);
// Add the "proxyaddresses" entries.
PropertyCollection properties = ((DirectoryEntry)user.GetUnderlyingObject()).Properties;
foreach (object property in properties["proxyaddresses"])
{
emailAddresses.Add(property.ToString());
}
この例が機能するには、「System.DirectoryServices.AccountManagement」への参照も必要です。 – Fueled
+1これは、a)助けを得るためにこのサイトを離れる必要はなく、b)それはすべての潜在的なLDAPクエリのものを持っていないので、受け入れられた答えより優れています。 –
私は正直言ってそれに賛成するつもりはありませんが、これは明快さを追加していますが、このドキュメントでは指摘していない重要な違いは指摘していません。 "this [proxyAddress]プロパティはSMTP、x.400などのすべての電子メールアドレスタイプをリストしますSMTPの種類を確認するためにコードを修正する必要があります。 "さらに、Microsoftは無効なドキュメントのためにここに責任を負うことになっています.Donut - 私はまだあなたが次のことをした理由を疑問に思っています。 emailAddresses.Add(user.EmailAddress) Microsoft docsがこの属性を " (複数のアドレス?) – Jordan