Получение электронных писем Gmail в статусе чтения с помощью Imap PHP

Я беру данные из Gmail с помощью этого кода

<?php $data = array(
       // email account
       'email' => array(
        'hostname' => '{imap.gmail.com:993/imap/ssl}INBOX',
        'username' => $emailAddress,
        'password' => $emailPassword     
       ),
       // inbox pagination
       'pagination' => array(
        'sort' => $sortBy, 
        'limit' => 10,
        'offset' => $offset
       )
      );
      $result = array();

      $imap = imap_open($data['email']['hostname'], $data['email']['username'], $data['email']['password']) or die ('Cannot connect to yourdomain.com: ' . imap_last_error());

$read = imap_search($imap, 'ALL');
 $overview   = imap_fetch_overview($imap, $read[$i], 0);
    $header     = imap_headerinfo($imap, $read[$i], 0);
    $mail       = $header->from[0]->mailbox . '@' . $header->from[0]->host;
    $image = '';
    $structure = imap_fetchstructure($imap, $read[$i]);
  if (isset($structure->parts) && is_array($structure->parts) && isset($structure->parts[1])) {
                 $part = $structure->parts[1];
            if ($part->encoding == 3) {
             $message = imap_fetchbody($imap,$read[$i],1.2);
                $message = imap_qprint($message);

            } else if ($part->encoding == 1) {
                $message = imap_8bit($message);
            } else {
             $message = imap_fetchbody($imap,$read[$i],2);
                $message = imap_qprint($message);
            }
        }else{
          $message    = imap_body($imap, $read[$i],0); 
        } 

?>

Все данные я получаю правильно, однако, когда я захожу на страницу со списком рассылки, полученные письма меняются на чтение.

Раньше он работал нормально, после некоторого использования появилась эта проблема. Есть идеи, в чем может быть причина?

Получение электронных писем помечает их как ПОСМОТРЕТЬ по умолчанию, если вы не используете вариант PEEK.

Max 14.03.2018 16:51

Все, что делает ваш код, это логин, а где остальное?

Max 14.03.2018 16:52

Привет @Max Я редактировал вопрос. В какой функции я должен использовать вариант PEEK?

Andranik Baghdasaryan 14.03.2018 17:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
305
1

Ответы 1

В imap_fetchbody добавьте флаг FT_PEEK, чтобы предотвратить автоматическую очистку флага \ Seen.

imap_fetchbody($imap, $read[$i], 1.2, FT_PEEK);

См. Документацию по флагу опции на официальный сайт.

Другие вопросы по теме