Exchange WebサービスAPIを使用して、 someone @ mydomain.comなどのメールボックス/電子メールアドレスが組織内に存在するかどうかを判断することは可能ですか?
もしそうなら、これを行う最も簡単な方法はどれですか?なりすましを使用せずにそれは可能ですか?
ケース: Windowsサービスは、組織内の人々に定期的に電子メールを送信します。それは彼らの電子メールアドレスについての明確な知識を持っていません。ユーザー名のみを認識し、電子メールアドレスはユーザー名@mydomain.comであると想定します。これは、メールボックスを持たない一部のユーザーを除くすべてのユーザーに当てはまります。このような場合、そもそも電子メールの送信を試みるべきではありません。
解決:
mathieuが提案したように、代わりにActiveDirectoryでユーザーと電子メールアドレスを探します。この関数は仕事を成し遂げます:
using System.DirectoryServices.AccountManagement;
// ...
public static bool TryGetUserEmailAddress(string userName, out string email)
{
using (PrincipalContext domainContext =
new PrincipalContext(ContextType.Domain, Environment.UserDomainName))
using (UserPrincipal user =
UserPrincipal.FindByIdentity(domainContext, userName))
{
if (user != null && !string.IsNullOrWhiteSpace(user.EmailAddress))
{
email = user.EmailAddress;
return true;
}
}
email = null;
return false; // user not found or no e-mail address specified
}