3

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

在每个需要文件夹名称的函数中,我都使用这样的字符串:

{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 - 失败,
  • "\INBOX\abc def" - 失败
4

3 回答 3

2

解决了!

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

任何属于 atom-specials 之一的字符(请参阅正式语法)都需要将邮箱名称表示为带引号的字符串或文字。

这包括空间:

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

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

{server}"INBOX. 带空格的文件夹"

但就我而言,正确的字符串是.....

{server}INBOX. 带空格的文件夹

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

于 2012-07-13T07:46:32.093 回答
1

当你引用目录时,你可以试试这个sintax:“\INBOX\folder with spaces”

所以这个解决方案获得了“在我的机器上工作”证书。你得到什么错误代码?

于 2012-07-12T12:46:28.100 回答
0

"\INBOX\abc def" 这更好,但可能你的收件箱放错了地方!
我认为它必须在“htdocs”中!
而且您只能访问文件,不能访问文件夹!
比如:“\INBOX\abc def\file.txt”

于 2012-07-13T09:22:50.030 回答