удаление imap не работает
Я использую функции php imap для анализа сообщения из веб-почты. Я могу извлекать сообщения одно за другим и сохранять их в БД. После сохранения я хочу удалить сообщение "Входящие". функция 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);
Я также протестировал - imap_expunge($connection);
Но это не работает. Сообщения не удаляются. Пожалуйста, помогите мне...
3
Author: Brian Tompsett - 汤莱恩, 2010-09-04
2 answers
Вы смешиваете 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);
?>
6
Author: shamittomar, 2010-09-04 05:17:41
На самом деле имена функций похожи на pop3. но они выполняют функции imap. как -
function pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false)
{
$ssl=($ssl==false)?"/novalidate-cert":"";
return (imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass));
}
function pop3_list($connection,$message="")
{
if ($message)
{
$range=$message;
} else {
$MC = imap_check($connection);
$range = "1:".$MC->Nmsgs;
}
$response = imap_fetch_overview($connection,$range);
foreach ($response as $msg) $result[$msg->msgno]=(array)$msg;
return $result;
}
0
Author: Imrul.H, 2010-09-04 06:38:48