【问题标题】:PHP IMAP - Can't identify boxesPHP IMAP - 无法识别框
【发布时间】:2015-03-05 12:30:39
【问题描述】:

我正在创建一个 PHP 应用程序,以将来自电子邮件帐户的所有电子邮件消息保存在我的数据库中。

当我连接到一个 gmail 帐户并使用 imap_list() 函数时,我得到这些框:

 array {
[0]=> "{imap.gmail.com:993/ssl}INBOX"
[1]=> "{imap.gmail.com:993/ssl}[Gmail]/Caixote do Lixo"
[2]=> "{imap.gmail.com:993/ssl}[Gmail]/Com estrela"
[3]=> "{imap.gmail.com:993/ssl}[Gmail]/Correio enviado"
[4]=> "{imap.gmail.com:993/ssl}[Gmail]/Importante"
[5]=> "{imap.gmail.com:993/ssl}[Gmail]/Rascunhos"
[6]=> "{imap.gmail.com:993/ssl}[Gmail]/Spam"
[7]=> "{imap.gmail.com:993/ssl}[Gmail]/Todo o correio" }

这些盒子是葡萄牙语的。当我连接到另一个帐户时,这些框有英文名称。这意味着我无法知道哪个框是 Trash 框或 Sent 框。

有没有办法正确识别每个盒子?

【问题讨论】:

  • 对,有这样一种方式:RFC6154
  • 不支持 RFC6154 的电子邮件客户端怎么办?
  • 找不到那些邮箱。不支持 IMAP 的邮件客户端甚至无法连接到 IMAP 服务器。
  • 你能给我一个代码示例,说明如何使用 php imap 函数获取这些特殊用途的邮箱吗?
  • 不,我不能。这就是为什么我发表评论,而不是答案。但是你使用的库是开源的,所以可以添加6154支持。毕竟,这就是开源得到改进的方式。

标签: php gmail imap imap-open


【解决方案1】:

也许您应该检查每个文件夹中的邮件数量?通常工作的垃圾箱或已发送框包含消息。

【讨论】:

  • 即使他们没有消息,我仍然需要拿到盒子。我拿到盒子后,它会与服务器同步。例如,当我从应用程序中删除一条消息时,无法识别这些框是一个问题。由于我不知道其中哪个是垃圾箱,所以我不知道将删除的邮件发送到哪里。
  • 尝试查看邮件标题。或者允许用户选择文件夹。
  • 你是说没有办法通过代码来识别盒子?
【解决方案2】:

这个问题有点棘手。我通过使用套接字连接而不是使用 PHP 本机 imap 函数连接到 imap 客户端来解决这个问题。这样我就得到了我需要的特殊用途属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多