Я в настоящее время нахожусь за нестабильной сетью. Отключение сети часто происходит.
Есть ли способ узнать, используется ли imap_delete вместе с
imap_expunge фактически удалил почту, потому что imap_delete всегда
возвращает истину, несмотря ни на что.
Я попытался настроить собственный обработчик ошибок, но обнаружил, что ни imap_delete (), ни imap_expunge () не генерируют ни исключений, ни предупреждений, ни ошибок.
Никогда нельзя быть полностью уверенным: imap_delete установит флаг \ Deleted.
Есть пара разных сценариев:
Случай 1:
1) The `STORE` command was received by the server
2) We received an `OK`.
Если вы получаете OK от сервера, вы можете быть уверены, что сервер принял команду (хотя сообщение может даже не существовать, и установка флагов для несуществующего сообщения не обязательно является ошибкой)
Случай 2:
1) The `STOR`E command was received by the server
2) We did not receive the `OK` due to network failure
В этом случае вы не можете быть уверены, было ли сообщение помечено как удаленное или нет, так как вы не получили OK. В этом случае вам нужно будет повторить удаление при повторном подключении.
Случай 3:
1) The `STORE` command was not received by the server.
2) We did not receive `OK` due to network failure
Это неотличимо от предыдущего случая. Вы должны переиздать удаление. Повторное сохранение флага может быть излишним, но это не повредит.
Я ожидал бы, что последние два случая вызовут какую-то ошибку, и в этом случае можно будет повторно ввести команды. Надеюсь, что кто-то, кто использует библиотеку PHP, может вмешаться в это.
Других решений пока нет …