Я использую приведенный ниже код для чтения своей входящей почты в 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 как результат, но в папке входящих сообщений оно отображается как непрочитанное.