我必须使用外部Exchange服务器。如何使用EWS获取用户输入的自己的电子邮件地址或检查地址(他引入了自己的地址)? 电子邮件地址与用户名不同。
答案 0 :(得分:1)
您可以将ConvertId与通用地址一起使用,然后Exchange将返回该邮箱的PrimarySMTP,例如。
Folder Inbox = Folder.Bind(service, WellKnownFolderName.Inbox);
AlternateId aiAlternateid = new AlternateId(IdFormat.EwsId, Inbox.Id.UniqueId, "mailbox@domain.com");
AlternateIdBase aiResponse = service.ConvertId(aiAlternateid, IdFormat.EwsId);
Console.WriteLine(((AlternateId)aiResponse).Mailbox);
答案 1 :(得分:0)
你可能对ResolveName方法有一些运气。使用此方法,您可以搜索用户的全局地址列表。并通过使用简单的if else来查看是否返回了任何结果。此方法确实解决了模糊名称,因此请务必仔细检查结果
示例:
mysqlcheck --repair --databases db_name ...
答案 2 :(得分:0)
根据iCode4U的答案,如果您的服务使用默认凭据(来自已登录的用户),那么这可能会得到您所需要的:
String address = service.ResolveName(Environment.UserName)(0).Mailbox.Address;
编辑:如果有人不相信上述查询带来的结果的唯一性,那么最好使用这样的东西(这可以在我的组织中使用,其中用户名也是电子邮件标识符,但每个人都必须调整它以适合他自己的情况):
string address = Service.ResolveName(Environment.UserName).Select(
a => a.Mailbox.Address).FirstOrDefault(
b => b.StartsWith(Environment.UserName + "@",
StringComparison.InvariantCultureIgnoreCase));
答案 3 :(得分:0)
我们使用用户PowerShell配置文件中加载的此功能。
Function CurrentUserPrimarySmtpAddress()
{
<#
.SYSNOPSIS
Attempt to retrieve the current user's primary SMTP address.
.DESCRIPTION
Attempt to retrieve the current user's primary SMTP address.
.NOTES
Author: David Barrett
Date Created: 08NOV2016
.LINK
https://gallery.technet.microsoft.com/office/PowerShellEWS-Update-items-48c3dcfc
.EXAMPLE
$PrimarySmtpAddress = CurrentUserPrimarySmtpAddress
#>
$searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
$result = $searcher.FindOne()
if ($result -ne $null)
{
return $result.Properties["mail"]
}
return $null
}