php - MSExchange URL 编码

标签 php exchange-server webdav url-encoding

我正在编写一个 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/

相关文章:

php - Laravel - MySQL 数据库测试

exchange-server - 在 ConvertId EWS 请求中指定多个 id (AlternateId)?

sharepoint - 用于第 3 方连接的 onedrive 的 WebDav URL

linux - 使用 davfs2 挂载 webdav 共享

PHP factor 30 从 Linux 到 Windows 的性能差异

使用 utf8mb4 的 PHP/mysql 站点无法从数据库中正确检索表情符号,尽管在我能找到的所有地方都指定了 utf8mb4

calendar - EWS : Access shared calendars

microsoft-graph-api - Office 365 管理员 : Audit MSGraph requests in Office365 Security & Compliance

java - slf4j 登录控制台而不是文件

php - 完整性约束违规 : Magento