我正在编写一个 PHP 服务来通过 WebDAV 查询 Exchange 服务器。该服务已经运行了大约一个月,没有出现任何问题,但今天遇到了一些问题,因为邮箱中收到了一封具有以下主题行的电子邮件:
FW: Daily Approval Report: Vendor/Master 007297
该消息存储在文件“FW:每日审批报告:供应商/主站 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 并没有帮助生成完整的异常(exception)情况列表。
最佳答案
我用谷歌搜索了一下,但找不到您正在寻找的角色的完整引用。
我唯一发现的是以下五个字符在 Exchange 中具有特殊编码:
- 正斜杠“/”编码为 _xF8FF_
- 问号“?”编码为_x003F_
- 反斜杠“\”编码为 _xF8FE_
- 波形符“~”编码为 _x007E_
- 欧元符号“€”编码为 _x0080_
也许看看 the source 会有所帮助。 Ximian Connector for Microsoft Exchange 的名称,更准确地说是第 280 行的“e2k_uri_append_encoded ”函数。
Ximian Connector 使 Ximian Evolution 能够充当 Microsoft Exchange 客户端,通过 WebDAV 协议(protocol)与 Microsoft Exchange 服务器进行通信,因此它必须完全处理您遇到的相同问题。
关于php - MSExchange URL 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423116/