Spec-Zone.ru › Python 3.14

poplib — клиент протокола POP3

Исходный код: Lib/poplib.py

Этот модуль определяет класс POP3, который инкапсулирует подключение к серверу POP3 и реализует протокол, определённый в RFC 1939. Класс POP3 поддерживает как минимальный, так и необязательный наборы команд из RFC 1939. Класс POP3 также поддерживает команду STLS, введённую в RFC 2595 для обеспечения зашифрованного обмена данными по уже установленному соединению.

Кроме того, этот модуль предоставляет класс POP3_SSL, который обеспечивает поддержку подключения к серверам POP3, использующим SSL в качестве базового уровня протокола.

Обратите внимание, что, несмотря на широкую поддержку, POP3 устаревает. Качество реализации серверов POP3 сильно различается, и слишком многие из них работают довольно плохо. Если ваш почтовый сервер поддерживает IMAP, лучше использовать класс imaplib.IMAP4, так как серверы IMAP, как правило, реализованы лучше.

Доступность: недоступен в WASI.

Этот модуль не работает или недоступен в WebAssembly. Дополнительную информацию см. в разделе Платформы WebAssembly.

Модуль poplib предоставляет два класса:

class poplib.POP3(host, port=POP3_PORT[, timeout])

Этот класс реализует собственно протокол POP3. Подключение устанавливается при инициализации экземпляра. Если параметр port не указан, используется стандартный порт POP3 (110). Необязательный параметр timeout задаёт время ожидания в секундах для попытки подключения (если он не указан, используется глобальное значение времени ожидания по умолчанию).

Вызывает событие аудита poplib.connect с аргументами self, host, port.

Все команды вызывают событие аудита poplib.putline с аргументами self и line, где line — байты, которые будут отправлены удалённому узлу.

Изменено в версии 3.9: Если параметру timeout задано значение ноль, будет вызвано исключение ValueError, чтобы предотвратить создание неблокирующего сокета.

class poplib.POP3_SSL(host, port=POP3_SSL_PORT, *, timeout=None, context=None)

Это подкласс POP3, который подключается к серверу через сокет с шифрованием SSL. Если параметр port не указан, используется порт 995 — стандартный порт POP3 поверх SSL. Параметр timeout работает так же, как и в конструкторе POP3. context — необязательный объект ssl.SSLContext, позволяющий объединить параметры конфигурации SSL, сертификаты и закрытые ключи в одной (потенциально долгоживущей) структуре. Рекомендации по безопасному использованию приведены в разделе Рекомендации по безопасности.

Вызывает событие аудита poplib.connect с аргументами self, host, port.

Все команды вызывают событие аудита poplib.putline с аргументами self и line, где line — байты, которые будут отправлены удалённому узлу.

Изменено в версии 3.2: Добавлен параметр context.

Изменено в версии 3.4: Теперь класс поддерживает проверку имени узла с помощью ssl.SSLContext.check_hostname и индикацию имени сервера (см. ssl.HAS_SNI).

Изменено в версии 3.9: Если параметру timeout задано значение ноль, будет вызвано исключение ValueError, чтобы предотвратить создание неблокирующего сокета.

Изменено в версии 3.12: Устаревшие параметры keyfile и certfile удалены.

В модуле poplib определено одно исключение в качестве атрибута:

exception poplib.error_proto

Исключение, вызываемое при любых ошибках в этом модуле (ошибки модуля socket не перехватываются). Причина исключения передаётся конструктору в виде строки.

См. также

Module imaplib

Стандартный модуль Python для IMAP.

Часто задаваемые вопросы о Fetchmail

В разделе часто задаваемых вопросов о POP/IMAP-клиенте fetchmail собрана информация о различиях между серверами POP3 и несоответствиях требованиям RFC. Она может быть полезна, если вам нужно написать приложение, использующее протокол POP.

Объекты POP3

Каждая команда POP3 представлена методом с таким же именем в нижнем регистре; большинство методов возвращает текст ответа, отправленный сервером.

Экземпляр POP3 имеет следующие методы:

POP3.set_debuglevel(level)

Задаёт уровень отладки экземпляра. Он определяет объём выводимой отладочной информации. Значение по умолчанию, 0, отключает вывод отладочной информации. Значение 1 включает умеренный объём отладочной информации — обычно одну строку на запрос. Значение 2 или выше включает максимальный объём отладочной информации: записывается каждая строка, отправленная через управляющее соединение или полученная по нему.

POP3.getwelcome()

Возвращает строку приветствия, отправленную сервером POP3.

POP3.capa()

Запрашивает возможности сервера, определённые в RFC 2449. Возвращает словарь в формате {'name': ['param'...]}.

Добавлено в версии 3.4.

POP3.user(username)

Отправляет команду user; в ответе должно быть указано, что требуется пароль.

POP3.pass_(password)

Отправляет пароль; ответ содержит количество сообщений и размер почтового ящика. Примечание: почтовый ящик на сервере заблокирован до вызова метода quit().

POP3.apop(user, secret)

Использует более безопасную аутентификацию APOP для входа на сервер POP3.

POP3.rpop(user)

Использует аутентификацию RPOP (аналогичную r-командам UNIX) для входа на сервер POP3.

POP3.stat()

Получает состояние почтового ящика. Результат — кортеж из двух целых чисел: (message count, mailbox size).

POP3.list([which])

Запрашивает список сообщений; результат имеет формат (response, ['mesg_num octets', ...], octets). Если задан параметр which, он указывает сообщение, которое нужно включить в список.

POP3.retr(which)

Получает сообщение с номером which целиком и устанавливает для него флаг прочтения. Результат имеет формат (response, ['line', ...], octets).

POP3.dele(which)

Помечает сообщение с номером which для удаления. На большинстве серверов сообщения удаляются только после команды QUIT (главное исключение — Eudora QPOP, который намеренно нарушает требования RFC и выполняет отложенное удаление при любом отключении).

POP3.rset()

Снимает все отметки об удалении в почтовом ящике.

POP3.noop()

Ничего не делает. Может использоваться для поддержания соединения.

POP3.quit()

Завершает сеанс: сохраняет изменения, снимает блокировку почтового ящика и разрывает соединение.

POP3.top(which, howmuch)

Получает заголовок сообщения и howmuch строк после заголовка сообщения с номером which. Результат имеет формат (response, ['line', ...], octets).

Команда POP3 TOP, используемая этим методом, в отличие от RETR не устанавливает флаг прочтения сообщения; к сожалению, TOP плохо описана в RFC и часто работает некорректно на серверах малоизвестных производителей. Прежде чем полагаться на этот метод, проверьте его вручную на используемых вами серверах POP3.

POP3.uidl(which=None)

Возвращает список идентификаторов сообщений (уникальных идентификаторов). Если указан параметр which, результат содержит уникальный идентификатор этого сообщения в формате 'response mesgnum uid; в противном случае результатом будет список (response, ['mesgnum uid', ...], octets).

POP3.utf8()

Пытается переключиться в режим UTF-8. В случае успеха возвращает ответ сервера, в противном случае вызывает исключение error_proto. Команда определена в RFC 6856.

Добавлено в версии 3.5.

POP3.stls(context=None)

Запускает сеанс TLS для активного соединения, как указано в RFC 2595. Это разрешено только до аутентификации пользователя.

Параметр context — это объект ssl.SSLContext, позволяющий объединить параметры конфигурации SSL, сертификаты и закрытые ключи в одной (потенциально долгоживущей) структуре. Рекомендации по безопасному использованию приведены в разделе Рекомендации по безопасности.

Этот метод поддерживает проверку имени узла с помощью ssl.SSLContext.check_hostname и индикацию имени сервера (см. ssl.HAS_SNI).

Добавлено в версии 3.4.

У экземпляров POP3_SSL нет дополнительных методов. Интерфейс этого подкласса идентичен интерфейсу родительского класса.

Пример использования POP3

Ниже приведён минимальный пример (без проверки ошибок), который открывает почтовый ящик, извлекает все сообщения и выводит их:

import getpass, poplib

M = poplib.POP3('localhost')
M.user(getpass.getuser())
M.pass_(getpass.getpass())
numMessages = len(M.list()[1])
for i in range(numMessages):
    for j in M.retr(i+1)[1]:
        print(j)

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

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/poplib.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API