MSExchange URL encoding

早过忘川 提交于 2019-12-24 02:47:10

问题


I am writing a PHP service to query an Exchange server via WebDAV. This service has been live for roughly a month with no issues, but experienced a hiccup today when an email with the following subject line arrived in the mailbox:

FW: Daily Approval Report: Vendor/Master 007297

The message is stored in the file "FW: Daily Approval Report: Vendor/Master 007297.EML" and is referenced through a url as:

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

I had been using the PHP rawurlencode() function to translate the message filename to its URL counterpart, but in this case rawurlencode() returns a mismatched string:

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

I'm no guru with Exchange and do not know how to match it's encoding. Can someone tell me if there is a mapping I can use to write my own function? I assume simply replacing / with \_xF8FF\_ and skipping colons will lead to chasing down this error again a month from now, but Google hasn't been helpful producing a full list of exceptions.


回答1:


I've googled around a bit, but I haven't been able to find the complete reference of characters that you're looking for.
The only thing that I've discovered is that the following five characters have a special encoding in Exchange:

  • Forward slash '/' is encoded as _xF8FF_
  • Question mark '?' is encoded as _x003F_
  • Backslash '\' is encoded as _xF8FE_
  • Tilde '~' is encoded as _x007E_
  • Euro symbol '€' is encoded as _x0080_

Maybe it could help to have a look at the source of the Ximian Connector for Microsoft Exchange, and more precisely at the "e2k_uri_append_encoded" function, at line 280.
The Ximian Connector enables Ximian Evolution to function as a Microsoft Exchange client by communicating with Microsoft Exchange servers through the WebDAV protocol, so it has to deal exactly with the same problem you have encountered.




回答2:


Which Exchange Server do you use? Keep in mind that WebDAV is not supported anymore. ES2007 supports WebDAV and Exchange Web Services. ES2010 supportes only Exchange Web Services. However, encoding is fixed ;-)



来源:https://stackoverflow.com/questions/10423116/msexchange-url-encoding

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!