imap_setflag_full не работает для изменения статуса почты - PullRequest
0 голосов
/ 05 июня 2018

Я использую приведенный ниже код для чтения своей входящей почты в gmail, и он отлично работает для чтения.

Но проблема в том, что некоторые сообщения не настроены так, как видно, поэтому они приходят каждый раз.

Согласно моим наблюдательным письмам, которые не меняют там флаг, от невидимого до видимого, это письма, в которых содержится некоторый HTML.

Ниже мой код:

 public function getMessages($type = 'text') {
        $stream = $this->imapStream;
        $emails = imap_search($stream, 'UNSEEN');
        $messages = array();
        if ($emails) {
            $this->emails = $emails;
            $i = 0;
            foreach ($emails as $email_number) {
                $this->attachments = array();
                $uid = imap_uid($stream, $email_number);
                $messages[] = $this->loadMessage($uid, $type);
                if ($i == $this->limit) {
                    break;
                }
                $i++;
                echo "seen status=>".imap_setflag_full($stream, $email_number, "\\Seen", ST_UID);
                //echo "seen status=>".imap_clearflag_full($stream, $email_number, "\\Seen");
            }
        }
        return $messages;
    }

Это строкая использую, чтобы вручную изменить статус

echo "seen status=>".imap_setflag_full($stream, $email_number, "\\Seen", ST_UID);

увиденное состояние всегда возвращает 1 как результат, но в папке входящих сообщений оно отображается как непрочитанное.

1 Ответ

0 голосов
/ 05 июня 2018

Вы используете порядковые номера сообщений (MSN), но предоставляете флаг ST_UID для функций своих флагов, меняя их на использование UID.Большинство MSN обычно не являются действительными UID.

Либо везде используйте UID (с FT_UID и ST_UID и т.п. для всех функций), либо везде MSN (никогда не используйте флаги UID и ничего не удаляйте во время цикла.)

imap_setflag_full($stream, $email_number, "\\Seen");

или

imap_setflag_full($stream, $uid, "\\Seen", ST_UID);

Если вы используете UID-версию поиска, вам не нужно звонить imap_uid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...