【问题标题】:How to find only "new" messages when using PHP's IMAP functions for a POP3 mailbox?将 PHP 的 IMAP 函数用于 POP3 邮箱时,如何仅查找“新”消息?
【发布时间】:2010-11-07 19:57:06
【问题描述】:

我正在使用 PHP 的 IMAP 函数从 POP3 邮箱中检索邮件,想知道有什么方法可以区分新邮件和旧邮件吗?

不幸的是,我不能只删除检索到的那些,因为它们需要保留在邮件服务器上,所以我现在想知道,以后每次连接时,我怎样才能检索新的或者能够告诉除了我之前已经检索过的旧的之外还有新的吗?

我知道每条消息都附加了一个 UID,我可以使用它。但是我已经读过,如果消息被删除,这可能会改变;因为消息可能会从服务器中删除。

【问题讨论】:

    标签: php email imap pop3


    【解决方案1】:

    很好找到这个..

    pop3 协议基本上不支持这个功能。然而,你 可以使用 message-id 实现这一点。 Message-Id 是电子邮件的唯一标识符 POP3 服务器。您的应用程序可以通过 GetMsgID 获取指定电子邮件的 message-id POPMAIN 对象的方法。

    首先,您的应用程序应记录检索到本地的电子邮件的 message-id 消息 ID 列表。下次在您检索电子邮件之前,请比较本地 message-id 带有远程消息 ID。如果此 message-id 存在于您的 local message-id list,则为旧,否则为新。

    虽然我很确定我之前读过并非所有客户端都会返回 message_id...有人知道这是否正确吗?

    【讨论】:

    • 如果邮箱中有数千条消息,检查数据库中的每个消息 ID 将使您的脚本永远运行。关于消息 UID,某些 Exchange 服务器版本不支持。我还没有找到获取新消息的好方法..
    【解决方案2】:

    这对我有用:

    $result = imap_search($connection, 'UNSEEN');
    

    参考:https://www.electrictoolbox.com/php-imap-unread-messages/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 2018-01-24
      • 2015-06-08
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多