使用 Exchange Web 服务 API,是否可以确定组织内是否存在邮箱/电子邮件地址(例如某人@ mydomain.com ) ?
如果是这样,这是最简单的方法,是否可以不使用模拟?
案例: Windows 服务定期向组织内的人员发送电子邮件。它对他们的电子邮件地址没有任何明确的了解。它只知道他们的用户名并假定他们的电子邮件地址是用户名@mydomain.com。除少数没有邮箱的用户外,所有用户都是如此。在这些情况下,它不应该首先尝试发送电子邮件。
解决方案:
正如mathieu建议的那样:改为在 Active Directory 中查找用户和电子邮件地址。这个函数完成了工作:
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
}