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. Подключение создается при инициализации экземпляра. Если порт опущен, используется стандартный порт 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-шифрованный сокет. Если порт не указан, используется 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и Server Name Indication (см.ssl.HAS_SNI).Изменено в версии 3.9: Если параметр timeout установлен в ноль, он вызовет
ValueError, чтобы предотвратить создание сокета без блокировки.Изменено в версии 3.12: Устаревшие параметры keyfile и certfile удалены.
Одно исключение определено как атрибут модуля poplib:
-
exception poplib.error_proto -
Исключение, генерируемое при возникновении любых ошибок в этом модуле (ошибки из модуля
socketне перехватываются). Причина исключения передаётся в конструктор в виде строки.
См. также
-
Moduleimaplib -
Стандартный модуль Python IMAP.
- Часто задаваемые вопросы о Fetchmail
-
В FAQ для клиента 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) -
Отправляет команду пользователя, ответ должен указывать, что требуется пароль.
-
POP3.pass_(password) -
Отправляет пароль, ответ включает количество сообщений и размер почтового ящика. Примечание: почтовый ящик на сервере заблокирован до тех пор, пока не будет вызван
quit().
-
POP3.apop(user, secret) -
Используйте более безопасную аутентификацию APOP для входа на сервер POP3.
-
POP3.rpop(user) -
Используйте аутентификацию RPOP (аналогично командам UNIX r-) для входа на сервер POP3.
-
POP3.stat() -
Получить статус почтового ящика. Результат — кортеж из 2 целых чисел:
(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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/poplib.html