Zend Mail Pop3 Чтение только непрочитанного сообщения - PullRequest
1 голос
/ 16 июля 2011

Я бы спросил, есть ли возможность получить только непрочитанное сообщение через pop3.

Imap имеет флаг UNSEEN, так что это может быть сделано с некоторой библиотекой.

Но если у меня есть только pop3? Как я могу получить только непрочитанные письма?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 16 июля 2011

POP3 не поддерживает непрочитанный флаг. Imap делает :-) Вы можете использовать Zend Framework, чтобы справиться с этим с помощью imap.

Я сделал это, чтобы найти «отскочившие» письма:

$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;
1 голос
/ 16 июля 2011

Сервер POP3 - по умолчанию - удаляет сообщение с сервера после его получения.Таким образом, сообщения, которые были прочитаны (приняты), больше не существуют.Вам нужно указать опцию, чтобы они оставались на сервере для каждого соединения.Я не знаю, Zend_Mail_Storage_Pop3 API Docs , чтобы сказать вам, что такое флаг / опция, но она должна быть. Проверьте документы .

Редактировать: Просто сканировать документы.Возможно, такой флаг не существует для реализации POP3 в Zend Framework .Возможно, вы можете подключиться через IMAP (я боюсь, не потому, что вы пишете об IMAP уже в своем вопросе) или альтернативно - но это будет означать, что вы отключитесь от библиотеки Zend - вы можете реализовать это самостоятельно с помощью PHP библиотеки изображений Руководство по PHP , которое также обрабатывает pop3 и предлагает такой флаг.

...