У меня есть одно приложение, в котором люди могут настроить свою учетную запись электронной почты через IMAP и выполнять такие операции, как чтение электронной почты, удаление, перемещение и т. Д. Я столкнулся с проблемой, что при удалении одной электронной почты удаляется другая электронная почта. После отладки я обнаружил, что 2 пользователя настроили одну и ту же учетную запись электронной почты, и они удаляют электронную почту из 2 разных браузеров без обновления страницы.
На самом деле после удаления одного сообщения электронной почты msgno возвращается imap_fetch_overview изменяется, но на другой странице то же письмо остается открытым со старым сообщением msgno, а при удалении этого письма другое письмо удаляется.
Проверьте
msgno до и после удаления
В приведенном выше примере после удаления почты, имеющей тему «test 4», msgno «test 6», «test 7», «test 8» изменяется. Теперь, если другой пользователь, ранее открывший почту, попытается удалить почту с темой «test 7», он фактически удалит почту с темой «test 8».
Для удаления электронной почты я использую функцию imap_delete, которая принимает msgno в качестве параметра. Пожалуйста, помогите, как решить эту проблему, или есть способ получить уникальный идентификатор для каждого письма, который не изменится, и используя этот идентификатор, я также могу выполнять операции IMAP, такие как удаление, перемещение и т. Д.
Вместо этого используйте уникальные идентификаторы. Я думаю, что все функции PHP принимают флаг (например, FT_UID?), Чтобы использовать UID вместо порядковых номеров.
Удаление сообщений может испортить идентификаторы последовательности, особенно если вы не обращаете внимания на ответы EXPUNGE.
Других решений пока нет …