Это распространенная проблема, к сожалению, не всегда имеет самое простое решение. Надеюсь, эта информация поможет вам и другим пользователям прийти к наилучшей реализации, которая соответствует вашим потребностям. Отказ от ответственности: если у вас есть возможность или возможность добавить IMAP в свой pop3, это, безусловно, сделает вещи более управляемыми.
Gmail имеет собственную реализацию Pop3, и с учетом сказанного, не все это относится к другим поставщикам pop3. Вот жизненный цикл проблемы и некоторая информация, которая может помочь вам с ней справиться:
Вы подключаетесь к серверу pop3 либо в НОРМАЛЬНОМ режиме, либо в НЕДАВНОМ режиме. Это переводит «сеанс» на поп-сервере в «состояние транзакции». Режим "Недавние" используется путем добавления к имени пользователя префикса "недавний:" + Имя пользователя. В режиме «Недавние» будут возвращены сообщения электронной почты за последние 30 дней на сервере. Примечание. * Это заменит команду UIDL, о которой я расскажу ниже. Т.е. В режиме последних будут возвращены все сообщения электронной почты за 30 дней, если они не были удалены. Поскольку он всегда возвращает последние 30 дней, если у вас несколько клиентов, все они получат одну и ту же информацию в недавнем режиме.
По умолчанию используется нормальный режим. В нормальном режиме будут соблюдаться ограничения команд, которые вы выберете для использования. UIDL вернет часть примерно 250 самых старых писем на сервере. Если у вас есть 500 писем на сервере, и вы не удаляете ни одного, UIDL будет возвращать идентификатор и уникальный идентификатор для этих первых 250 писем, так что вы можете не знать о новых 250. Предостережение заключается в следующем: GMAIL в веб-консоли, где вы настраиваете всплывающее окно, есть опция «Включить всплывающее окно с этого момента». Если выбрать это и сохранить, временная метка в этот момент будет использоваться сервером pop для «обновления» самого старого времени. Поэтому UIDL начнет возвращать вам сообщения с этого момента до тех пор, пока вы снова не достигнете отметки 250 (при условии, что вы их не удалили).
Важно отметить, что состояние транзакции существует до тех пор, пока вы не введете команду QUIT. После выполнения этой команды сервер переходит в состояние «Обновить», где он начинает выдавать запрошенные вами обновления, такие как команды УДАЛИТЬ, или выдавать их после того, как они были загружены. Пока команда QUIT не будет успешно выдана, ничего не будет удалено, и состояние сервера не изменится.
Команда STAT покажет вам количество писем в стеке pop3, которые находятся на вашем сервере.
Команда RETR получит или загрузит электронное письмо, но оно не будет помечено как загруженное, пока вы не завершите сеанс.
UIDL, который многие разработчики используют для получения номеров сообщений и уникальных идентификаторов, очень полезен, если вы поддерживаете состояние сервера и отправляете электронное письмо. UIDL будет возвращать только самые старые 250-летние (я видел 251–255) электронные письма. Если вы постоянно запрашиваете новую электронную почту, это опасно, если электронная почта не была удалена. ТАКЖЕ! если вам нужно удалить электронную почту, убедитесь, что параметр GMAIL «Хранить копию в моем почтовом ящике» настроен в веб-консоли, чтобы у вас был доступ к этим электронным письмам в качестве резервной копии.
Команда LIST решит вашу проблему в обычном режиме для получения более 250 писем обратно (примечание: вам все еще нужно поддерживать файл идентификатора локально для перекрестной проверки входящей почты, чтобы знать, новая или старая) ... ОДНАКО : эта команда также возвращает почту из ящика SENT, что для многих не является жизнеспособным решением.
Подсказки:
Если вы управляете почтовым ящиком быстро и эффективно и не считаете, что 250 является ограничивающим фактором для вашего процесса, UIDL и RETR будут работать.
Если у вас не получится сохранить в почтовом ящике менее 250 единиц, но вам также потребуется доступ к новой электронной почте, и вы не ожидаете, что почтовый ящик вырастет до возмутительных размеров, а производительность не будет иметь значения, режим ПОСЛЕДНИЙ должен работать.
person
Vontei
schedule
11.06.2020