php:imap消息序列号在删除一封电子邮件后被更改

时间:2015-12-04 09:24:23

标签: php imap php-imap

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

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

检查 msgno before and after delete

在上面的示例中删除了主题为"测试4"的邮件,"测试6","测试7","测试8& #34;变了。现在,如果以前打开邮件的其他用户尝试删除主题为" test 7"的邮件,则实际上会删除主题为" test 8"的邮件。

删除电子邮件我使用的是imap_delete函数,它以msgno为参数。请帮助如何处理这样的问题,或者是否有办法为每个不会改变的邮件获取唯一标识符,并使用该标识符我还可以执行删除,移动等IMAP操作。

1 个答案:

答案 0 :(得分:1)

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

删除邮件可能会弄乱序列ID,尤其是在您没有注意EXPUNGE响应的情况下。