2

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

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

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

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

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

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

我不是 Exchange 的专家,也不知道如何匹配它的编码。有人可以告诉我是否有一个映射可以用来编写我自己的函数吗?我假设简单地替换/\_xF8FF\_跳过冒号会导致一个月后再次追查这个错误,但谷歌并没有帮助生成完整的例外列表。

4

2 回答 2

3

我用谷歌搜索了一下,但我无法找到您正在寻找的字符的完整参考。
我发现的唯一一件事是以下五个字符在 Exchange 中具有特殊编码:

  • 正斜杠 '/' 编码为 _xF8FF_
  • 问号“?” 编码为 _x003F_
  • 反斜杠 '\' 被编码为 _xF8FE_
  • 波浪号 '~' 被编码为 _x007E_
  • 欧元符号“€”编码为 _x0080_

看看Microsoft Exchange 的 Ximian 连接器的源代码可能会有所帮助,更准确地说是第 280 行的“ e2k_uri_append_encoded ”函数。Ximian
连接器通过与 Microsoft 通信使 Ximian Evolution 能够充当 Microsoft Exchange 客户端通过 WebDAV 协议交换服务器,因此它必须完全处理您遇到的相同问题。

于 2012-07-28T16:59:34.820 回答
1

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

于 2012-07-31T10:18:47.133 回答