Документация Python неофициальный перевод

poplib.md

134 строк · 10.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/poplib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 20.9. [`poplib`](https://python-all.ru/2.7/library/poplib.html#module-poplib) – клиент протокола POP389**Исходный код:** [Lib/poplib.py](https://python-all.ru/src/2.7/Lib/poplib.py)1011---1213This module defines a class, [`POP3`](https://python-all.ru/2.7/library/poplib.html#poplib.POP3), which encapsulates a connection to a POP3 server and implements the protocol as defined in [**RFC 1725**](https://python-all.ru/2.7/library/poplib.html). The [`POP3`](https://python-all.ru/2.7/library/poplib.html#poplib.POP3) class supports both the minimal and optional command sets. Additionally, this module provides a class [`POP3_SSL`](https://python-all.ru/2.7/library/poplib.html#poplib.POP3_SSL), which provides support for connecting to POP3 servers that use SSL as an underlying protocol layer.1415Обратите внимание, что POP3, хотя и широко поддерживается, устаревает. Качество реализации POP3-серверов сильно различается, и слишком многие из них довольно плохи. Если ваш почтовый сервер поддерживает IMAP, лучше использовать класс [`imaplib.IMAP4`](https://python-all.ru/2.7/library/imaplib.html#imaplib.IMAP4), так как IMAP-серверы, как правило, реализованы лучше.1617Модуль [`poplib`](https://python-all.ru/2.7/library/poplib.html#module-poplib) предоставляет два класса:1819#### `class poplib.POP3(host[, port[, timeout]])`2021Этот класс реализует собственно протокол POP3. Соединение создаётся при инициализации экземпляра. Если параметр *port* опущен, используется стандартный порт POP3 (110). Необязательный параметр *timeout* задаёт тайм-аут в секундах для попытки подключения (если не указан, будет использована глобальная настройка тайм-аута по умолчанию).2223Изменено в версии 2.6: добавлен параметр *timeout*.2425#### `class poplib.POP3_SSL(host[, port[, keyfile[, certfile]]])`2627Это подкласс [`POP3`](https://python-all.ru/2.7/library/poplib.html#poplib.POP3), который подключается к серверу через SSL-шифрованный сокет. Если *port* не указан, используется порт 995, стандартный порт POP3-over-SSL. *keyfile* и *certfile* также необязательны – они могут содержать закрытый ключ в формате PEM и файл цепочки сертификатов для SSL-соединения.2829Новое в версии 2.4.3031В модуле [`poplib`](https://python-all.ru/2.7/library/poplib.html#module-poplib) определено одно исключение в качестве атрибута:3233#### `exception poplib.error_proto`3435Исключение, возбуждаемое при любых ошибках этого модуля (ошибки из модуля [`socket`](https://python-all.ru/2.7/library/socket.html#module-socket) не перехватываются). Причина исключения передаётся конструктору в виде строки.3637> **См. также**38>39> **Модуль [`imaplib`](https://python-all.ru/2.7/library/imaplib.html#module-imaplib)**40>41> Стандартный модуль Python для IMAP.42>43> **[Часто задаваемые вопросы о Fetchmail](https://python-all.ru/2.7/library/poplib.html)**44>45> FAQ для POP/IMAP-клиента **fetchmail** содержит информацию о вариациях POP3-серверов и несоблюдении RFC, которая может быть полезна, если вам нужно написать приложение на основе протокола POP.4647## 20.9.1. Объекты POP34849Все команды POP3 представлены одноимёнными методами в нижнем регистре; большинство из них возвращает текст ответа, отправленный сервером.5051Экземпляр [`POP3`](https://python-all.ru/2.7/library/poplib.html#poplib.POP3) имеет следующие методы:5253#### `POP3.set_debuglevel(level)`5455Устанавливает уровень отладки экземпляра. Это контролирует объём выводимой отладочной информации. Значение по умолчанию, `0`, не даёт отладочного вывода. Значение `1` даёт умеренный объём отладочного вывода, как правило, одну строку на запрос. Значение `2` или выше даёт максимальный объём отладочного вывода, с записью каждой строки, отправленной и полученной по управляющему соединению.5657#### `POP3.getwelcome()`5859Возвращает приветственную строку, отправленную POP3-сервером.6061#### `POP3.user(username)`6263Отправляет команду USER; ответ должен указать, что требуется пароль.6465#### `POP3.pass_(password)`6667Отправляет пароль; ответ включает количество сообщений и размер почтового ящика. Примечание: почтовый ящик на сервере блокируется до вызова `quit()`.6869#### `POP3.apop(user, secret)`7071Использует более безопасную аутентификацию APOP для входа на POP3-сервер.7273#### `POP3.rpop(user)`7475Использует аутентификацию RPOP (аналогично UNIX-командам r-\*) для входа на POP3-сервер.7677#### `POP3.stat()`7879Получает статус почтового ящика. Результат – кортеж из двух целых чисел: `(message count, mailbox size)`.8081#### `POP3.list([which])`8283Запрашивает список сообщений; результат возвращается в формате `(response, ['mesg_num octets', ...], octets)`. Если задан *which*, это номер сообщения для вывода списка.8485#### `POP3.retr(which)`8687Извлекает сообщение номер *which* целиком и устанавливает его флаг прочитанности. Результат возвращается в формате `(response, ['line', ...], octets)`.8889#### `POP3.dele(which)`9091Помечает сообщение номер *which* для удаления. На большинстве серверов удаление фактически не выполняется до команды QUIT (основное исключение – Eudora QPOP, который намеренно нарушает RFC, выполняя отложенные удаления при любом разрыве соединения).9293#### `POP3.rset()`9495Удаляет все пометки удаления для почтового ящика.9697#### `POP3.noop()`9899Ничего не делает. Может использоваться для поддержания соединения.100101#### `POP3.quit()`102103Завершение сеанса: фиксирует изменения, разблокирует почтовый ящик, закрывает соединение.104105#### `POP3.top(which, howmuch)`106107Извлекает заголовок сообщения и *howmuch* строк после заголовка сообщения номер *which*. Результат возвращается в формате `(response, ['line', ...], octets)`.108109Команда TOP POP3, используемая этим методом, в отличие от команды RETR, не устанавливает флаг прочитанности сообщения; к сожалению, TOP плохо специфицирован в RFC и часто некорректно работает на серверах малоизвестных производителей. Перед использованием этого метода проверьте его вручную на тех POP3-серверах, с которыми вы будете работать, прежде чем доверять ему.110111#### `POP3.uidl([which])`112113Возвращает список дайджестов сообщений (уникальных идентификаторов). Если указан *which*, результат содержит уникальный идентификатор для этого сообщения в формате `'response mesgnum uid`, в противном случае результат – список `(response, ['mesgnum uid', ...], octets)`.114115Экземпляры [`POP3_SSL`](https://python-all.ru/2.7/library/poplib.html#poplib.POP3_SSL) не имеют дополнительных методов. Интерфейс этого подкласса идентичен родительскому.116117## 20.9.2. Пример POP3118119Вот минимальный пример (без проверки ошибок), который открывает почтовый ящик и извлекает и выводит все сообщения:120121```python122import getpass, poplib123124M = poplib.POP3('localhost')125M.user(getpass.getuser())126M.pass_(getpass.getpass())127numMessages = len(M.list()[1])128for i in range(numMessages):129    for j in M.retr(i+1)[1]:130        print j131```132133В конце модуля есть тестовый раздел, содержащий более полный пример использования.134