imap_delete()不工作?

时间:2017-12-02 05:26:18

标签: php imap

我正在制作退​​回处理程序,我想删除所有退回的电子邮件。我正在尝试使用imap_delete(),但电子邮件不会被删除。可能是什么问题?

<?php
// Settings
require_once(dirname(__FILE__) . '/settings.php');

// Bounce
$bounce = array();

$inbox = imap_open('{imap.example.com:143/novalidate-cert}INBOX', 'mail-bounce@example.com', 'SECRET') or die('Cannot connect to mailbox: ' . imap_last_error());

$emails = imap_search($inbox, 'ALL');

if($emails) {
    foreach($emails as $id) {
        preg_match('/<(.*?)>: host/s', imap_fetchbody($inbox, $id, 1), $matches);

        $bounce[] = $matches[1];

        imap_delete($inbox, $id);
    }
}

imap_close($inbox);

if(!empty($bounce)) {
    $STH = $DBH->prepare("UPDATE newsletter SET status=-1 WHERE email='" . implode(" OR email='", $bounce) . "'");
    $STH->execute();
}
?>

imap_last_error()不会返回任何错误。

1 个答案:

答案 0 :(得分:0)

imap_delete()标记要删除的电子邮件。但是,在您致电imap_expunge()或使用可选的CL_EXPUNGE参数致电imap_close()之前,它实际上并未删除。