IMAP、PHP不返回消息
我用我的用户名和密码连接到服务器。它连接的资源id为2。它正确地显示状态,列出收件箱中未读电子邮件的数量、最近的邮件等。但是当涉及到imap_num_msg()函数时,我传入了正确的参数,但它返回0。它返回0时我做错了什么IMAP、PHP不返回消息,php,email,gmail,imap,Php,Email,Gmail,Imap,我用我的用户名和密码连接到服务器。它连接的资源id为2。它正确地显示状态,列出收件箱中未读电子邮件的数量、最近的邮件等。但是当涉及到imap_num_msg()函数时,我传入了正确的参数,但它返回0。它返回0时我做错了什么 <?php $mbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", "xxxxx", "xxxxxx", OP_HALFOPEN) or die("can't connect: " . i
<?php
$mbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", "xxxxx", "xxxxxx", OP_HALFOPEN)
or die("can't connect: " . imap_last_error());
$list = imap_list($mbox, "{imap.gmail.com:993/imap/ssl}INBOX", "*");
if (is_array($list)) {
foreach ($list as $val) {
echo imap_utf7_decode($val) . "\n";
}
} else {
echo "imap_list failed: " . imap_last_error() . "\n";
}
$status = imap_status($mbox, "{imap.gmail.com:993/imap/ssl}INBOX", SA_ALL);
if ($status) {
echo "Messages: " . $status->messages . "<br />\n";
echo "Recent: " . $status->recent . "<br />\n";
echo "Unseen: " . $status->unseen . "<br />\n";
echo "UIDnext: " . $status->uidnext . "<br />\n";
echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";
} else {
echo "imap_status failed: " . imap_last_error() . "\n";
}
$numMessages = imap_num_msg($mbox);
if ($numMessages) {
echo $numMessages;
} else {
echo "imap_status failed: " . imap_last_error() . "\n";
}
imap_close($mbox);
?>
解决了这个问题,解决方案是将imap_open()函数中的标志设置为OP_READONLY,从而打开邮箱
<?php
$mbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", "xxxxxx", "xxxxxx", OP_READONLY, 1)
or die("can't connect: " . imap_last_error());
?>