【问题标题】:php : imap message sequence number gets changed after deleting one emailphp : imap 消息序列号在删除一封电子邮件后更改
【发布时间】:2015-12-04 09:24:23
【问题描述】:

我有一个应用程序,人们可以通过 IMAP 配置电子邮件帐户并执行阅读电子邮件、删除、移动等操作。我面临的问题是,在删除一封电子邮件时,其他电子邮件会被删除。调试后发现有2个用户配置了同一个邮箱账号,他们从2个不同的浏览器中删除邮件,没有刷新页面。

实际上,在删除imap_fetch_overview 返回的一封电子邮件后,msgno 已更改,但在其他页面中,相同的邮件仍然打开且具有旧的 msgno,并且在删除该电子邮件时,其他邮件将被删除。

检查 msgno before and after delete

在上面的示例中,删除主题为“test 4”的邮件后,“test 6”、“test 7”、“test 8”的 msgno 被更改。现在如果以前打开过邮件的其他用户尝试删除主题为“test 7”的邮件,实际上会删除主题为“test 8”的邮件。

要删除电子邮件,我使用了 imap_delete 函数,它以 msgno 作为参数。请帮助如何处理此类问题,或者有没有办法为每封不会更改的邮件获取唯一标识符,并且使用该标识符我还可以执行 IMAP 操作,如删除、移动等。

【问题讨论】:

  • 使用唯一 ID。我认为所有 PHP 函数都带有一个标志(如 FT_UID?)来表示使用 UID 而不是序列号。
  • 感谢@Max 成功了
  • 我会添加作为答案。

标签: php imap php-imap


【解决方案1】:

改为使用唯一 ID。我认为所有 PHP 函数都带有一个标志(如 FT_UID?)来表示使用 UID 而不是序列号。

删除消息可能会弄乱序列 ID,尤其是在您不注意 EXPUNGE 响应的情况下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2012-06-24
    • 2021-02-06
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多