【问题标题】:Exchange 2013 to Exchange 2016Exchange 2013 到 Exchange 2016
【发布时间】:2019-03-28 19:41:44
【问题描述】:

在 Exchange 2013 中,我使用 EmailMessage 对象生成了一封电子邮件。我将此消息保存在草稿文件夹中,并从保存方法中取回一个 ID。然后,我通过绑定从草稿文件夹中加载电子邮件消息,并从我编写 URL 到使用“WebClientReadFormQueryString”属性创建的电子邮件的消息中加载。然后,我可以将用户定向到加载此电子邮件的 OWA 弹出窗口。

现在我们已迁移到 Exchange 2016,不会加载弹出窗口。生成的电子邮件可以在草稿文件夹中看到。我希望它自动显示加载了草稿电子邮件的 OWA 弹出窗口。 (与 Exchange 2013 的行为相同)。

提前致谢。

【问题讨论】:

    标签: c# exchangewebservices outlook-web-app


    【解决方案1】:

    请参阅WebClientReadFormQueryString 上 Microsoft 官方文档的版本差异部分

    从主要版本 15 开始并以 Exchange Server 2013 内部版本 15.0.775.38 (CU3) 和 Exchange Online 版本 15.00.0775.009 结束的 Exchange 版本不会在 WebClientReadFormQueryString 元素中返回正确的查询字符串片段。

    在早于主要版本 15 的 Exchange 版本中,该项目 Outlook Web App URL 的标识符是 Outlook Web App 标识符。如果您的目标 Exchange 版本早于 大版本 15,你必须使用 ConvertId 操作来转换 标识符。

    你可能需要在你的代码中做这样的事情:

        // Versions of Exchange starting with major version 15 and ending with Exchange Server 2013 build 15.0.775.09
        // returned a different query string fragment. This optional check is not required for applications that
        // target Exchange Online.
        if ((serverInfo.MajorVersion == 15) && (serverInfo.MajorBuildNumber < 775) &&(serverInfo.MinorBuildNumber < 09))
        {
          // If your client is connected to an Exchange 2013 server that has not been updated to CU3,
          // this query string will be returned.
          owaReadFormQueryString = string.Format("#viewmodel=_y.$Ep&ItemID={0}",
            System.Web.HttpUtility.UrlEncode(ewsIdentifer, Encoding.UTF8));
        }
        else
        {
          // If your client is connected to an Exchanger 2010, Exchange 2013 CU3, or Exchange Online server,
          // the WebClientReadFormQueryString is used.
          owaReadFormQueryString = msg.WebClientReadFormQueryString;
        }
    
        // Create the URL that Outlook Web App uses to open the email message.
        Uri url = service.Url;
        string owaReadAccessUrl = string.Format("{0}://{1}/owa/{2}",
          url.Scheme, url.Host, owaReadFormQueryString);
    
        if (!string.IsNullOrEmpty(owaReadAccessUrl))
        {
          System.Diagnostics.Process.Start("IEXPLORE.EXE", owaReadAccessUrl);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2013-01-30
      • 1970-01-01
      • 2022-08-10
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多