通过imap_delete()和imap_expunge()检测成功删除


Detect successful deletion by imap_delete() and imap_expunge()

我目前正处于一个不稳定的网络后面。网络断开经常发生。

有没有办法找到imap_delete是否与imap_expunge实际上删除了邮件,因为imap_delete总是无论怎样都会返回true。

我尝试设置一个自定义错误处理程序,但发现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

在这种情况下,您无法确定邮件是否被标记为已删除,因为您没有收到"确定"。在这种情况中,您应该在重新连接时重新发出删除。

案例3:

1) The `STORE` command was not received by the server.
2) We did not receive `OK` due to network failure

这与以前的情况无法区分。您应该重新发出删除。再次存储标志可能是多余的,但不会造成任何伤害。

我预计后两种情况会导致某种错误,在这种情况下可以安全地重新发出命令。希望使用PHP库的人能够参与进来。