0

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

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

删除前后检查 msgno

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

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

4

1 回答 1

1

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

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

于 2015-12-07T22:14:14.813 回答