【发布时间】: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 成功了
-
我会添加作为答案。