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, как правило, реализованы лучше.
Доступность: не Emscripten, не WASI.
Этот модуль не работает или недоступен на платформах WebAssembly wasm32-emscripten и wasm32-wasi. Для получения дополнительной информации см. Платформы 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и 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) -
Отправляет команду user, ответ должен указать, что требуется пароль.
-
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и Server Name Indication (см.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.12/library/poplib.html