Проблема с imap_fetchstructure (): неверный номер сообщения - PullRequest
3 голосов
/ 22 июля 2011

Я работаю над IMAP, читая электронную почту из моей учетной записи Google, и не могу найти способ проверить, существует ли электронная почта с точным номером или почему произошла эта ошибка.

Вот мой код, поэтому в основном я устанавливаю соединение, чем ищу всю электронную почту, получаю список из определенного списка отправителей, а затем запускаю функцию процесса

$mail_conn = imap_open($this->hostname, $this->username, $this->password);

...

$emails = imap_search($mail_conn, 'FROM ' . $sender, SE_UID);
$results = $this->process($mail_conn, $emails);

Функция процесса выглядит следующим образом

....

            foreach ($emails as $email_number)
            {
            $email_structure = imap_fetchstructure($mail_conn, $email_number, FT_UID);

.....

Я пытался удалить FT_UID, но та же ошибка сохраняется. Что может быть вашим предложением, что делать?

Что я получаю при отладке:

В электронных письмах imap_search возвращает

[emails] => Array
    (
        [0] => 513384
        [1] => 513501
        [2] => 514079
    )

Я начинаю обрабатывать этот идентификатор

[email_number] => 513384

после возникновения этой ошибки.

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

У меня возникла та же проблема, и, похоже, следующие:

Замените поисковый вызов

$emails = imap_search($mail_conn, 'FROM ' . $sender, SE_UID);

на вызов сортировки с критериями поиска

$emails = imap_sort($mail_conn, SORTARRIVAL, 0, null, 'FROM ' . $sender);

Примечаниечто если указана опция SE_UID (вместо нуля, которая у меня есть), то она перестает работать по какой-то причине ...

0 голосов
/ 05 января 2016

Функция imap_sort имеет формат:

imap_sort ($imap_stream, $criteria, $reverse, $options = 0, $search_criteria = null, $charset = 'NIL')

Вы должны использовать: imap_sort ($mail_conn, SORTARRIVAL, 0, SE_UID, 'FROM ' . $sender)

...