poplib
— Клиент протокола POP3¶
Kod źródłowy: Lib/poplib.py
Цей модуль визначає клас POP3
, який інкапсулює підключення до сервера POP3 і реалізує протокол, як визначено в RFC 1939. Клас POP3
підтримує як мінімальний, так і необов’язковий набори команд з RFC 1939. Клас POP3
також підтримує команду STLS
, представлену в RFC 2595, щоб увімкнути зашифрований зв’язок у вже встановленому з’єднанні.
Крім того, цей модуль надає клас POP3_SSL
, який забезпечує підтримку підключення до серверів POP3, які використовують SSL як базовий рівень протоколу.
Зауважте, що POP3, хоча й широко підтримується, застарів. Якість впровадження POP3-серверів дуже різна, і дуже багато з них досить погані. Якщо ваш поштовий сервер підтримує IMAP, краще використовувати клас imaplib.IMAP4
, оскільки сервери IMAP краще реалізовані.
Dostępność: not WASI.
Этот модуль не работает или недоступен в WebAssembly. См. Платформы веб-сборки для получения дополнительной информации.
Модуль poplib
надає два класи:
- class poplib.POP3(host, port=POP3_PORT[, timeout])¶
Цей клас реалізує фактичний протокол POP3. Підключення створюється під час ініціалізації екземпляра. Якщо порт не вказано, використовується стандартний порт POP3 (110). Необов’язковий параметр timeout визначає час очікування в секундах для спроби підключення (якщо не вказано, буде використано глобальне налаштування часу очікування за замовчуванням).
Викликає подію аудиту
poplib.connect
з аргументамиself
,host
,port
.Усі команди викличуть подію аудиту
poplib.putline
з аргументамиself
іline
, деline
— це байти, які мають бути надіслані на віддалений пристрій хост.Zmienione w wersji 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
— це байти, які мають бути надіслані на віддалений пристрій хост.Zmienione w wersji 3.2: Додано параметр context.
Zmienione w wersji 3.4: Класс теперь поддерживает проверку имени хоста с помощью
ssl.SSLContext.check_hostname
и Индикации имени сервера (см.ssl.HAS_SNI
).Zmienione w wersji 3.9: Якщо параметр timeout дорівнює нулю, це викличе
ValueError
, щоб запобігти створенню неблокуючого сокета.Zmienione w wersji 3.12: Устаревшие параметры keyfile и certfile были удалены.
Один виняток визначено як атрибут модуля poplib
:
- exception poplib.error_proto¶
Виняток виникає при будь-яких помилках із цього модуля (помилки з модуля
socket
не переймаються). Причина винятку передається конструктору у вигляді рядка.
Zobacz także
- Модуль
imaplib
Стандартний модуль IMAP Python.
- Часті запитання про 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'...]}
.Dodane w wersji 3.4.
- POP3.user(username)¶
Надіслати команду користувача, відповідь має вказувати, що потрібен пароль.
- POP3.pass_(password)¶
Отправьте пароль, ответ включает количество сообщений и размер почтового ящика. Примечание: почтовый ящик на сервере заблокирован до тех пор, пока не будет вызван
quit()
.
- 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.Dodane w wersji 3.5.
- POP3.stls(context=None)¶
Розпочніть сеанс TLS на активному з’єднанні, як зазначено в RFC 2595. Це дозволено лише перед автентифікацією користувача
Параметр context — це об’єкт
ssl.SSLContext
, який дозволяє об’єднувати параметри конфігурації SSL, сертифікати та приватні ключі в єдину (потенційно довговічну) структуру. Будь ласка, прочитайте Міркування безпеки, щоб дізнатися про найкращі практики.Этот метод поддерживает проверку имени хоста через
ssl.SSLContext.check_hostname
и Индикацию имени сервера (см.ssl.HAS_SNI
).Dodane w wersji 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)
Наприкінці модуля є тестовий розділ, який містить докладніший приклад використання.