我正在编写一个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无法提供完整的例外列表。
答案 0 :(得分:3)
我已经搜索了一下,但是我找不到你正在寻找的字符的完整参考。
我发现的唯一一件事就是以下五个字符在Exchange中有一个特殊的编码:
也许有助于查看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服务。 但是,编码是固定的; - )