在Exchange 2013中,我已经使用EmailMessage对象生成了一封电子邮件。我将此消息保存在Drafts文件夹中,并从save方法获取ID。然后,我通过绑定从草稿文件夹加载该电子邮件,并从该邮件中构成使用“ WebClientReadFormQueryString”属性创建的电子邮件的URL。然后,我可以将用户引导到加载了该电子邮件的OWA弹出窗口。
现在我们迁移到Exchange 2016,不会加载弹出窗口。可以在草稿文件夹中看到生成的电子邮件。我希望它自动显示已加载电子邮件草稿的OWA弹出窗口。 (行为与Exchange 2013相同)。
谢谢。
答案 0 :(得分:0)
请参见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);
}