Определить успешное удаление с помощью imap_delete () и imap_expunge ()

Я в настоящее время нахожусь за нестабильной сетью. Отключение сети часто происходит.

Есть ли способ узнать, используется ли imap_delete вместе с
imap_expunge фактически удалил почту, потому что imap_delete всегда
возвращает истину, несмотря ни на что.

Я попытался настроить собственный обработчик ошибок, но обнаружил, что ни imap_delete (), ни imap_expunge () не генерируют ни исключений, ни предупреждений, ни ошибок.

0

Решение

Никогда нельзя быть полностью уверенным: 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, может вмешаться в это.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]