проверка imap бросает уведомление, когда почтовый ящик пуст


Итак, я недавно начал свою первую настоящую работу (ура!) и работаю над проверкой электронной почты.

Все отлично работает, никаких ошибок... при условии, что есть электронные письма.

$mbox = imap_open("{.../pop3/novalidate-cert}INBOX","[email protected]","...");
$inbox = imap_check($mbox);

Приведенный выше код отлично работает, когда во входящих есть электронные письма, но если их нет, я получаю эту ошибку в конце страницы:

Примечание: Неизвестно: Почтовый ящик пуст (errflg=1) в неизвестном в строке 0

Никакое подавление ошибок, похоже, не в состоянии остановить это брошенный, кроме error_reporting(E_ALL^E_NOTICE), который я бы предпочел не использовать (на этот раз!)

Можно ли что-нибудь сделать?

 2
Author: Niet the Dark Absol, 2013-12-05

2 answers

Я думаю, что это может быть несоответствие PHP.

Ознакомьтесь с этой библиотекой IMAP https://github.com/barbushin/php-imap . Я использовал это в проекте, который импортировал тысячи электронных писем без каких-либо проблем.

protected function initImapStream() {
    $imapStream = @imap_open($this->imapPath, $this->login, $this->password);
    if(!$imapStream) {
        throw new ImapMailboxException('Connection error: ' . imap_last_error());
    }
    return $imapStream;
}

Используется оператор подавления ошибок @, я предполагаю, что это обходной путь.

Источник: https://github.com/barbushin/php-imap/blob/master/src/ImapMailbox.php#L48

Изменить: Оказывается, вы можете отключить это уведомление с помощью вариант. Цитата из http://php.net/manual/en/function.imap-open.php#73514

Вы можете избежать этого сообщения:

Предупреждение: (null)(); Почтовый ящик пуст (errflg=1) в неизвестном в строке 0

Путем указания параметра OP_SILENT для imap_open.

 7
Author: SamV, 2013-12-05 10:50:59

Я только что обнаружил, что вызов функции imap_errors() подавляет исключение уведомления.

Поэтому единственное, что вам нужно сделать, это добавить это где-нибудь в свой код:

$errors = imap_errors();

Что вы будете делать с переменной $errors после этого, зависит от вас.

 3
Author: Dominique, 2016-07-20 09:19:46