MSExchange URL编码

时间:2012-05-02 23:27:04

标签: php exchange-server webdav url-encoding

我正在编写一个PHP服务来通过WebDAV查询Exchange服务器。这项服务已经存在了大约一个月而没有任何问题,但今天当一封带有以下主题行的电子邮件到达邮箱时出现了打扰:

  

FW:每日审批报告:供应商/主人007297

该消息存储在“FW:Daily Approval Report:Vendor / Master 007297.EML”文件中,并通过URL引用:

FW:%20Daily%20Approval%20Report:%20Vendor_xF8FF_Master%20007297.EML

我一直在使用PHP rawurlencode()函数将消息文件名转换为其URL副本,但在这种情况下rawurlencode()会返回不匹配的字符串:

FW%3A%20Daily%20Approval%20Report%3A%20Vendor%2FMaster%20007297.EML

我不是Exchange的大师,也不知道如何匹配它的编码。有人能告诉我是否有可以用来编写我自己的函数的映射?我假设只是将/替换为\_xF8FF\_并且跳过冒号会导致从现在开始一个月后再次追踪此错误,但Google无法提供完整的例外列表。

2 个答案:

答案 0 :(得分:3)

我已经搜索了一下,但是我找不到你正在寻找的字符的完整参考。
我发现的唯一一件事就是以下五个字符在Exchange中有一个特殊的编码:

  • 正斜杠'/'编码为_xF8FF _
  • 问号'?'编码为_x003F _
  • 反斜杠'\'编码为_xF8FE _
  • Tilde'〜'编码为_x007E _
  • 欧元符号'€'编码为_x0080 _

也许有助于查看Ximian Connector for Microsoft Exchange的the source,更准确地说是在“e2k_uri_append_encoded”函数的第280行。
Ximian Connector通过WebDAV协议与Microsoft Exchange服务器通信,使Ximian Evolution可以充当Microsoft Exchange客户端,因此它必须完全处理您遇到的相同问题。

答案 1 :(得分:1)

您使用哪个Exchange Server?请记住,不再支持WebDAV。 ES2007支持WebDAV和Exchange Web服务。 ES2010仅支持Exchange Web服务。 但是,编码是固定的; - )