Php Zend Mail Pop3只读未读邮件

Php Zend Mail Pop3只读未读邮件,php,zend-framework,email,pop3,Php,Zend Framework,Email,Pop3,我想问你是否存在通过pop3仅检索未读邮件的可能性 Imap有一个不可见的标志,所以它可以通过一些库来完成 但如果我只有pop3?如何仅检索未读邮件 非常感谢。默认情况下,POP3服务器会在收到邮件后从服务器上删除邮件。因此,已读取(获取)的消息不再存在。您需要指定一个选项,使它们在每个连接上都留在服务器上。我不知道该怎么告诉你旗帜/选项是什么,但应该有一个 编辑:只需扫描文档。Zend框架中的POP3实现可能不存在这样的标志。可能您可以通过IMAP连接(我担心这不是因为您在问题中已经写过IMA

我想问你是否存在通过pop3仅检索未读邮件的可能性

Imap有一个不可见的标志,所以它可以通过一些库来完成


但如果我只有pop3?如何仅检索未读邮件


非常感谢。

默认情况下,POP3服务器会在收到邮件后从服务器上删除邮件。因此,已读取(获取)的消息不再存在。您需要指定一个选项,使它们在每个连接上都留在服务器上。我不知道该怎么告诉你旗帜/选项是什么,但应该有一个


编辑:只需扫描文档。Zend框架中的POP3实现可能不存在这样的标志。可能您可以通过IMAP连接(我担心这不是因为您在问题中已经写过IMAP),或者——但这意味着您可以从Zend库中切换出来——您可以使用也处理pop3并提供此类标志的实现。pop3不支持未读标志。Imap有:-)您可以使用Zend框架来处理Imap

我这样做是为了找到“被退回”的邮件:

$subjectifypailed='Delivery Status Notification(Failure)';
$bouncedMails=array();
$params=数组(
'user'=>$config->gmail->user,
“主机”=>$config->gmail->host,
“密码”=>$config->gmail->password,
“端口”=>$config->gmail->port,
'ssl'=>(bool)$config->gmail->ssl,
);
$mailStorage=new Zend_Mail_Storage_Imap($params);
$count=$mailStorage->count();
$i=1;
while($i获取消息($i);
if($message->hasFlag(Zend\u Mail\u Storage::FLAG\u SEEN)==false){
if(strtolower($message->getHeader('subject'))==
strtolower($subjectivepailed)){
$bouncedMails[]=$message->getHeader('x-failed-recipients');
}           
}
$i++;
}
返回$bouncedMails;

您知道另一个库允许它吗?谢谢。我尝试过imap库,但未读邮件的标志与imap相对,它不适用于pop3。它返回的未读邮件数量不正确。Ireadhttp://stackoverflow.com/questions/4119402/how-to-find-only-new-messages-when-using-phps-imap-functions-for-a-pop3-mailbo .我想这是一种独特的可能性。也许你可以将你已经收到的邮件存储在服务器上,例如数据库或文件系统中。Zend为此提供了
Maildir
存储。它甚至支持标志。你可以像邮件客户端一样复制邮件并保留本地存储。这可能是最值得一试的方法。Bo这是
Zend\u Mail\u存储
s,因此应该相对容易。和的可能重复,但如果我只有pop3?如何仅检索未读取的邮件?
$subjectIfFailed = 'Delivery Status Notification (Failure)';
$bouncedMails = array();

$params = array(
    'user'     => $config->gmail->user,
    'host'     => $config->gmail->host,
    'password' => $config->gmail->password,
    'port'     => $config->gmail->port,
    'ssl'      => (bool) $config->gmail->ssl, 
);

$mailStorage = new Zend_Mail_Storage_Imap($params);

$count = $mailStorage->count();
$i = 1;

while ($i <= $count) {
    $message = $mailStorage->getMessage($i);

    if ($message->hasFlag(Zend_Mail_Storage::FLAG_SEEN) === false) {

        if (strtolower($message->getHeader('subject')) == 
            strtolower($subjectIfFailed)) {
                  $bouncedMails[] = $message->getHeader('x-failed-recipients');
        }           
    }
    $i++;
}

return $bouncedMails;