Spec-Zone.ru › Python 2.7

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

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

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

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

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

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

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

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

class poplib.POP3_SSL(host[, port[, keyfile[, certfile]]])

Это подкласс POP3, который подключается к серверу по защищенному SSL-сокету. Если port не указан, используется 995, стандартный порт POP3 через SSL. keyfile и certfile также необязательны — они могут содержать файл закрытого ключа и сертификата цепочки в формате PEM для SSL-соединения.

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

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

exception poplib.error_proto

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

См. также

Module imaplib

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

Вопросы и ответы о Fetchmail

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

1. Объекты POP3

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

У экземпляра POP3 есть следующие методы:

POP3.set_debuglevel(level)

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

POP3.getwelcome()

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

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])

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

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

2. Пример 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/poplib.html

Spec-Zone.ru

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