Как получить новую почту из папки «Входящие» Gmail с помощью команды POP3?

Я хочу получать почту из папки "Входящие" Gmail с помощью команд POP3. В моем аккаунте более 1000 электронных писем. Но я могу получить только 255 самых старых писем. Помогите мне получить новую почту из моего почтового ящика.

 public double GetEmailCount()
    {
        double count = 0;
        string response = SendCommand("STAT");

        if (IsResponseOk(response))
        {
            string[] arr = response.Substring(4).Split(' ');
            count = Convert.ToDouble(arr[0]);
        }
        else
            count = -1;
        return count;
    }

person Harshal Sathawane    schedule 08.08.2014    source источник


Ответы (2)


Если вы не видите всю свою электронную почту, указанную в вашей учетной записи GMail, при использовании POP3, вам, вероятно, нужно изменить настройки POP3 в GMail, чтобы отображались все сообщения. По умолчанию он не показывает вам все сообщения.

person jstedfast    schedule 09.08.2014

Это распространенная проблема, к сожалению, она не всегда имеет самое простое решение. Надеюсь, эта информация поможет вам и другим найти наилучшую реализацию, соответствующую вашим потребностям.

  • В Gmail есть собственная реализация Pop3, и при этом не все из этого относится к другим провайдерам pop3.

Вот жизненный цикл проблемы и некоторая информация, которая может помочь вам справиться с ней:

  1. Вы подключаетесь к серверу pop3 либо в режиме NORMAL, либо в режиме RECENT. Это помещает «сеанс» на поп-сервере в «состояние транзакции».
  2. Недавний режим используется путем префикса имени пользователя при соединении с «недавним:» + имя пользователя. Недавний режим вернет последние 30 дней электронной почты на сервере. Обратите внимание, что это заменит команду UIDL, о которой я расскажу ниже. т.е. Недавний режим вернет все сообщения электронной почты за последние 30 дней, если они не были удалены. Поскольку он всегда возвращает последние 30 дней, если у вас несколько клиентов, все они будут получать одну и ту же информацию в последнем режиме.

  3. Нормальный режим используется по умолчанию. Обычный режим будет учитывать ограничения команд, которые вы выбрали для использования. UIDL вернет примерно 250 самых старых писем на сервере. Если у вас есть 500 электронных писем на сервере, и вы не удаляете ни одно из них, UIDL вернет идентификатор и уникальный идентификатор для этих первых 250 электронных писем, поэтому вы можете не знать о новых 250. Предостережение здесь следующее: GMAIL имеет параметр на веб-консоли, где вы настраиваете поп, «Включить поп с этого момента». При выборе и сохранении метка времени в этот момент будет использоваться поп-сервером для «обновления» самого старого времени. Поэтому UIDL начнет возвращать вам сообщения с этого момента, пока вы снова не достигнете отметки 250 (при условии, что вы их не удалили).

  4. Важно отметить, что состояние транзакции существует до тех пор, пока вы не выполните команду QUIT. После выдачи этой команды сервер переходит в состояние «Обновление», в котором он начинает выдавать запрошенные вами обновления, например, команды DELETE, или выталкивать их после того, как они были загружены. Пока QUIT не будет выполнен успешно, ничего не будет удалено и состояние сервера не изменится.

  5. Команда STAT покажет вам количество электронных писем в стеке pop3, которые находятся на вашем сервере.

  6. Команда RETR извлечет или загрузит электронное письмо, но оно не будет помечено как загруженное, пока вы успешно не завершите сеанс.

  7. UIDL, который многие разработчики используют для получения номеров сообщений и уникальных идентификаторов, очень полезен, если вы поддерживаете состояние сервера и открываете электронную почту. UIDL будет возвращать только самые старые электронные письма из 250 (я видел 251-255). Если вы постоянно запрашиваете новую электронную почту, это опасно, если электронная почта не была удалена. ТАКЖЕ! если вам нужно удалить электронную почту, убедитесь, что параметр GMAIL «Сохранить копию в папке «Входящие»» настроен в веб-консоли, чтобы у вас был доступ к этим электронным письмам в качестве резервной копии.

  8. Команда LIST решит вашу проблему в обычном режиме для получения более 250 электронных писем (примечание: вам все равно нужно поддерживать файл id локально для перекрестной проверки входящей почты, чтобы узнать, новая она или старая)... ОДНАКО: эта команда также возвращает почту из ящика SENT, что для многих не является жизнеспособным решением.

Подсказки:

Если вы управляете почтой быстро и эффективно и не считаете, что число 250 является ограничивающим фактором в вашем процессе, вам подойдут UIDL и RETR.

Если вы не сможете поддерживать количество входящих сообщений ниже 250, но вам также нужен доступ к новой электронной почте, И вы не ожидаете, что почтовый ящик вырастет до невероятных размеров, а производительность не имеет значения, режим ПОСЛЕДНИЕ должен работать.

Полезная документация

person Vontei    schedule 11.06.2020