我正在尝试从 Imap 服务器 (Gmail) 读取邮件。我会检查是否有新邮件(未见)并按所见进行检查。
我写了这段代码但是
imap_setflag_full
似乎不起作用。
如果我有一封新邮件,则脚本无法放置“SEEN”标志,并且它回显我总是有一封未见的邮件。
$mbox=imap_open( "{imap.gmail.com:993/ssl/novalidate-cert}" , $this->username, $this->password);
if ($mbox)
{ echo "Connected\n<br><br>";
} else { exit ("Can't connect: " . imap_last_error() ."\n"); echo "FAIL!\n"; };
if ($hdr = imap_check($mbox)) {
$msgCount = $hdr->Nmsgs;
echo "There are ".$msgCount." mail";
} else {
echo "Failed to get mail";
}
$result = imap_search($mbox, 'UNSEEN');
echo "<br>Result: ";
print_r($result);
if($result==false)
echo "No email";
else{
echo "you have mail";
echo("<br>now I set the Seen flag for this mail");
rsort($result);
$status = imap_setflag_full($mbox, "1", "\\Seen \\Flagged", ST_UID);
}
echo"<br><br>";
$result = imap_search($mbox, 'UNSEEN');
echo "<br>Result: ";
print_r($result);
if($result==false)
echo "no mail";
else{
echo "there are still";
}
太感谢了。
我认为问题出在你硬编码的“1”上。我将“1”替换为:
foreach ($result as $mail) {
$status = imap_setflag_full($mbox, $mail, "\\Seen \\Flagged", ST_UID);
}
这似乎有效。当使用 ST_UID 时,这实际上意味着一个 ID,而不是序列号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)