PHP imap和带空格的文件夹名称

时间:2012-07-12 12:35:04

标签: php imap

如何处理包含空格的文件夹名称?

在每个需要文件夹名称的函数中,即时使用字符串:

{server.address.com:port}"INBOX.abc def"

但它导致php崩溃:

Can't subscribe to mailbox "INBOX.abc def": no such mailbox

将字符串更改为:

{server.address.com:port}INBOX."abc def"

没有改变任何东西,仍然是错误。如何打开/检查/名称中包含空格的文件夹?

修改 问题更新了更好的错误消息

我试过的文件夹字符串的组合:

  • “INBOX.abc def” - 失败,
  • INBOX。“abc def” - 失败,
  • \ INBOX \ abc def - fail,
  • “\ INBOX \ abc def” - 失败

3 个答案:

答案 0 :(得分:2)

解决!

根据RFC3501,邮箱命名(5.1):

  

任何一个原子特征之一的角色(见正式版)            语法)将要求邮箱名称表示为            引用字符串或文字。

包括空格:

  

atom-specials =“(”/“)”/“{”/ SP / CTL / list-wildcards /                     quoted-specials / resp-specials

所以,正确的文件夹字符串应为:

  

{server}“带空格的INBOX.folder”

但在我的情况下,正确的字符串是.....

  

{server}带空格的INBOX.folder

不知道为什么,似乎PHP的imap功能与RFC不完全兼容。或者只是我无法阅读和理解rfc。

答案 1 :(得分:1)

您可以在引用目录时尝试使用此sintax:  “\ INBOX \带空格的文件夹”

因此,此解决方案获得“在我的机器上工作”证书。你得到什么错误代码?

答案 2 :(得分:0)

“\ INBOX \ abc def”这个更好,但也许你的INBOX在错误的位置! 我认为它必须在“htdocs”中! 并且您只能访问文件,而不能访问文件夹!
 喜欢:“\ INBOX \ abc def \ file.txt”