如何使用Exchange Web服务(EWS)获取当前用户自己的电子邮件地址或输入的支票?

时间:2016-08-25 16:37:09

标签: exchangewebservices ews-managed-api

我必须使用外部Exchange服务器。如何使用EWS获取用户输入的自己的电子邮件地址或检查地址(他引入了自己的地址)? 电子邮件地址与用户名不同。

4 个答案:

答案 0 :(得分:1)

此时best solution

您可以将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 ...

如果您想了解更多相关信息:https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.exchangeservice.resolvename(v=exchg.80).aspx

答案 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
    }