我目前正在测试一个脚本,该脚本将通过电子邮件帐户删除每页加载的 20 封最旧的电子邮件。(数字仅用于测试目的)然而。我注意到我正在做的事情有几个问题:
1 - 它似乎有时会忽略电子邮件。例如。我有12封电子邮件可以删除。然而它只删除了 6,当我再次运行脚本时,它删除了 3,然后下降到 2,最后我不得不再次刷新以删除最后一个。有谁知道为什么会这样?当限制为 20 时。所以无论如何都会循环 20 次。
2 - 主要问题是,尽管它从收件箱中删除。当我转到"所有邮件"时。每封电子邮件都还在那里。
代码如下,以防有人能发现我遇到这些困难的原因。(虽然删除了imap_open调用。
$numMessages = imap_num_msg($imap);
//for ($i = $numMessages; $i > ($numMessages - 20); $i--) {
for($i=1; $i<=20; $i++)
{
$header = imap_header($imap, $i);
$fromInfo = $header->from[0];
$replyInfo = $header->reply_to[0];
$details = array(
"fromAddr" => (isset($fromInfo->mailbox) && isset($fromInfo->host))
? $fromInfo->mailbox . "@" . $fromInfo->host : "",
"fromName" => (isset($fromInfo->personal))
? $fromInfo->personal : "",
"replyAddr" => (isset($replyInfo->mailbox) && isset($replyInfo->host))
? $replyInfo->mailbox . "@" . $replyInfo->host : "",
"replyName" => (isset($replyTo->personal))
? $replyto->personal : "",
"subject" => (isset($header->subject))
? $header->subject : "",
"udate" => (isset($header->udate))
? $header->udate : ""
);
$uid = imap_uid($imap, $i);
echo "<ul>";
echo "<li><strong>From:</strong>" . $details["fromName"];
echo " " . $details["fromAddr"] . "</li>";
echo "<li><strong>Subject:</strong> " . $details["subject"] . "</li>";
echo '<li><a href="mail.php?folder=' . $folder . '&uid=' . $uid . '&func=read">Read</a>';
echo " | ";
echo '<a href="mail.php?folder=' . $folder . '&uid=' . $uid . '&func=delete">Delete</a>';
echo " | ";
echo date("F j, Y, g:i a",$details['udate']) . '</li>';
echo "</ul>";
imap_delete($imap, $uid, FT_UID);
}
imap_expunge($imap);
imap_close($imap);
?>
谢谢
由于Google邮件可以位于多个"文件夹"(标签)中imap_delete因此只需删除相应的标签。
首先,您必须将邮件移动到"废纸篓"文件夹。从那里您可以imap_delete它们。
来源:删除 IMAP 邮件