【发布时间】:2015-02-20 02:56:10
【问题描述】:
我们最近升级到 Exchange 2013 并发现 EWS 托管 API 在此版本中发送转发时实际上并没有发送 TimeZoneDefinition 标头(实际上它似乎只对我们使用的 2007_SP1 这样做)。所以我用谷歌搜索了一下,发现了一个我可以连接的事件,据说它会将此标头写入序列化请求。不幸的是,这不起作用。代码会执行,但是当最终用户收到转发的电子邮件时,原始发送日期仍然是 UTC,而不是他们的时区(我用它来初始化服务客户端)。谁能明白为什么这不起作用?这是设置和发送:
var emailForward = originalEmail.CreateForward();
emailForward.ToRecipients.Add(recipient);
emailForward.Save(WellKnownFolderName.Drafts);
_service.OnSerializeCustomSoapHeaders += ServiceOnSerializeAddTimeZoneDefinitionSoapHeader;
emailForward.Send();
_service.OnSerializeCustomSoapHeaders -= ServiceOnSerializeAddTimeZoneDefinitionSoapHeader;
这是事件处理程序:
private void ServiceOnSerializeAddTimeZoneDefinitionSoapHeader(XmlWriter writer)
{
writer.WriteRaw(Environment.NewLine + " <t:TimeZoneContext><t:TimeZoneDefinition Id=\"" + _service.TimeZone.StandardName + "\"/></t:TimeZoneContext>" + Environment.NewLine);
}
【问题讨论】:
标签: c# .net exchange-server exchangewebservices