如果循环中断,如何从imap中删除消息

时间:2015-11-20 12:46:36

标签: php exchange-server imap

我使用php从Exchange邮箱中读取邮件。以下只是一个简单的脚本而不是一个真实的例子。

在某些时候,' for'循环有时会中断,我正在解决这些问题。

如果有10条消息并且最后一条消息中断,那么其他9条本应删除的消息将不会被删除,因为无法到达删除代码。

是否有解决办法,即使代码中断,我仍然可以删除已经处理删除的正确电子邮件。

    //checking how many messages are in the mailbox
    $total = imap_num_msg($inbox);
    //if there are any messages then process them
    if ( $total > 0){
    echo "\nAnalysing Mailbox\n";

    for ($x=$total; $x>0; $x--){
    //doing some work here 

    delete_processed_message($x);
    }

    echo "Please wait, expunging old messages\n";
    imap_expunge($inbox);
    echo "Please wait, disconnecting from mail box\n";
    imap_close($inbox);

非常感谢。

1 个答案:

答案 0 :(得分:0)

另一种方法是将@RolesAllowed包裹在try-catch block中(可以找到官方文档here)。这样,即使它抛出异常(这可能是它破坏的原因),它也会继续其余的消息。

代码应如下所示

delete_processed_message($x)

就像在this question中解释的那样,使用for循环中的try-catch确保完成。