我正在制作退回处理程序,我想删除所有退回的电子邮件。我正在尝试使用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()
不会返回任何错误。
答案 0 :(得分:0)
imap_delete()
标记要删除的电子邮件。但是,在您致电imap_expunge()
或使用可选的CL_EXPUNGE
参数致电imap_close()
之前,它实际上并未删除。