imap_delete无法正常工作

Imr*_*l.H 6 php pop3 imap

我正在使用php imap函数来解析来自webmail的消息.我可以逐个获取消息并将其保存在DB中.保存后,我想删除收件箱邮件.imap_delete函数在这里不起作用.我的代码是这样的:

$connection = pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false);//connect
$stat = pop3_list($connection);//list messages

foreach($stat as $line) {
  //save in db codes...
  imap_delete($connection, $line['msgno']);//flag as delete
}

imap_close($connection, CL_EXPUNGE);
Run Code Online (Sandbox Code Playgroud)

我也测试过 - imap_expunge($connection);
但它不起作用.邮件不会被删除.请帮帮我...

sha*_*mar 9

您正在混合POP和IMAP.

那不行.您需要打开与IMAP的连接.看这个例子:

<?php

$mbox = imap_open("{imap.example.org}INBOX", "username", "password")
    or die("Can't connect: " . imap_last_error());

$check = imap_mailboxmsginfo($mbox);
echo "Messages before delete: " . $check->Nmsgs . "<br />\n";

imap_delete($mbox, 1);

$check = imap_mailboxmsginfo($mbox);
echo "Messages after  delete: " . $check->Nmsgs . "<br />\n";

imap_expunge($mbox);

$check = imap_mailboxmsginfo($mbox);
echo "Messages after expunge: " . $check->Nmsgs . "<br />\n";

imap_close($mbox);
?>
Run Code Online (Sandbox Code Playgroud)

  • 请注意shamittomar在删除后使用imap_expunge.在IMAP中,您首先标记要删除的邮件,当您完成标记后,您会执行一次删除调用以最终删除标记的邮件. (3认同)