poplib
— POP3 protocol client¶
Вихідний код: Lib/poplib.py
Цей модуль визначає клас POP3
, який інкапсулює підключення до сервера POP3 і реалізує протокол, як визначено в RFC 1939. Клас POP3
підтримує як мінімальний, так і необов’язковий набори команд з RFC 1939. Клас POP3
також підтримує команду STLS
, представлену в RFC 2595, щоб увімкнути зашифрований зв’язок у вже встановленому з’єднанні.
Крім того, цей модуль надає клас POP3_SSL
, який забезпечує підтримку підключення до серверів POP3, які використовують SSL як базовий рівень протоколу.
Зауважте, що POP3, хоча й широко підтримується, застарів. Якість впровадження POP3-серверів дуже різна, і дуже багато з них досить погані. Якщо ваш поштовий сервер підтримує IMAP, краще використовувати клас imaplib.IMAP4
, оскільки сервери IMAP краще реалізовані.
Availability: not Emscripten, not WASI.
This module does not work or is not available on WebAssembly platforms
wasm32-emscripten
and wasm32-wasi
. See
WebAssembly platforms for more information.
Модуль 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: The class now supports hostname check with
ssl.SSLContext.check_hostname
and Server Name Indication (seessl.HAS_SNI
).Змінено в версії 3.9: Якщо параметр timeout дорівнює нулю, це викличе
ValueError
, щоб запобігти створенню неблокуючого сокета.Змінено в версії 3.12: The deprecated keyfile and certfile parameters have been removed.
Один виняток визначено як атрибут модуля poplib
:
- exception poplib.error_proto¶
Виняток виникає при будь-яких помилках із цього модуля (помилки з модуля
socket
не переймаються). Причина винятку передається конструктору у вигляді рядка.
Дивись також
- Модуль
imaplib
Стандартний модуль IMAP Python.
- Часті запитання про Fetchmail
Поширені запитання щодо POP/IMAP-клієнта fetchmail збирають інформацію про варіанти POP3-сервера та невідповідність RFC, що може бути корисним, якщо вам потрібно написати програму на основі протоколу POP.
Об’єкти POP3¶
All POP3 commands are represented by methods of the same name, in lowercase; most return the response text sent by the server.
A POP3
instance has the following methods:
- POP3.set_debuglevel(level)¶
Установіть рівень налагодження примірника. Це контролює кількість надрукованих виводів налагодження. Значення за замовчуванням,
0
, не створює вихідних даних для налагодження. Значення1
створює помірну кількість налагоджувальних виводів, як правило, один рядок на запит. Значення2
або вище створює максимальну кількість налагоджувальних виводів, реєструючи кожен рядок, надісланий і отриманий через контрольне з’єднання.
- POP3.getwelcome()¶
Повертає рядок привітання, надісланий сервером POP3.
- POP3.capa()¶
Запитуйте можливості сервера, як зазначено в RFC 2449. Повертає словник у формі
{'name': ['param'...]}
.Added in version 3.4.
- POP3.user(username)¶
Надіслати команду користувача, відповідь має вказувати, що потрібен пароль.
- POP3.pass_(password)¶
Send password, response includes message count and mailbox size. Note: the mailbox on the server is locked until
quit()
is called.
- POP3.apop(user, secret)¶
Використовуйте більш безпечну автентифікацію APOP для входу на сервер POP3.
- POP3.rpop(user)¶
Використовуйте аутентифікацію RPOP (подібно до r-команд UNIX), щоб увійти на сервер POP3.
- POP3.stat()¶
Отримати статус поштової скриньки. Результатом є кортеж із 2 цілих чисел:
(кількість повідомлень, розмір поштової скриньки)
.
- POP3.list([which])¶
Список повідомлень запиту, результат у формі
(відповідь, ['mesg_num octets', ...], octets)
. Якщо встановлено which, це повідомлення для списку.
- POP3.retr(which)¶
Отримайте повний номер повідомлення which і встановіть для нього позначку «переглянуто». Результат має форму
(відповідь, ['рядок', ...], октети)
.
- POP3.dele(which)¶
Позначити номер повідомлення яке для видалення. На більшості серверів видалення фактично не виконується, доки не буде вимкнено (основним винятком є Eudora QPOP, яка навмисно порушує RFC, виконуючи очікувані видалення під час будь-якого відключення).
- POP3.rset()¶
Видаліть усі позначки видалення з поштової скриньки.
- POP3.noop()¶
Нічого не робити. Може використовуватися як засіб підтримки життя.
- POP3.quit()¶
Підпис: внести зміни, розблокувати поштову скриньку, розірвати з’єднання.
- POP3.top(which, howmuch)¶
Отримує заголовок повідомлення плюс скільки рядків повідомлення після заголовка номера повідомлення which. Результат має форму
(відповідь, ['рядок', ...], октети)
.Команда 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.Added in version 3.5.
- POP3.stls(context=None)¶
Розпочніть сеанс TLS на активному з’єднанні, як зазначено в RFC 2595. Це дозволено лише перед автентифікацією користувача
Параметр context — це об’єкт
ssl.SSLContext
, який дозволяє об’єднувати параметри конфігурації SSL, сертифікати та приватні ключі в єдину (потенційно довговічну) структуру. Будь ласка, прочитайте Міркування безпеки, щоб дізнатися про найкращі практики.This method supports hostname checking via
ssl.SSLContext.check_hostname
and Server Name Indication (seessl.HAS_SNI
).Added in version 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)
Наприкінці модуля є тестовий розділ, який містить докладніший приклад використання.