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, как правило, лучше
реализованы.
Модуль poplib
предоставляет два класса:
-
class
poplib.
POP3
(host, port=POP3_PORT[, timeout])¶ Класс фактически реализует протокол POP3. Соединение создается при инициализации сущность. Если параметр port опущен, стандартный порт POP3 (110) имеет значение используемый. Необязательный параметр timeout указывает тайм-аут в секундах для попытки подключения (если не указан, то глобальным параметром тайм-аута по умолчанию будет используемый).
Raises an auditing event
poplib.connect
with argumentsself
,host
,port
.Все команды поднимают событие аудита
poplib.putline
с аргументамиself
иline
, гдеline
- это байты, отправляемые удаленному узлу.
-
class
poplib.
POP3_SSL
(host, port=POP3_SSL_PORT, keyfile=None, certfile=None, timeout=None, context=None)¶ Подкласс
POP3
, который подключается к серверу через SSL- шифрованный сокет. Если port не указан, 995, используется стандартный порт POP3-over-SSL. timeout работает как в конструктореPOP3
. context является необязательным объектомssl.SSLContext
, который позволяет объединить опции конфигурации SSL, сертификаты и закрытые ключи в единую (потенциально долгоживущую) структуру. Пожалуйста, прочитайте Соображения безопасности для лучших практик.keyfile и certfile являются устаревшей альтернативой context - они могут указывать на файлы закрытого ключа и цепочки сертификатов в формате PEM, соответственно, для SSL-соединения.
Raises an auditing event
poplib.connect
with argumentsself
,host
,port
.Все команды поднимают событие аудита
poplib.putline
с аргументамиself
иline
, гдеline
- это байты, отправляемые удаленному узлу.Изменено в версии 3.2: Добавлен context параметр.
Изменено в версии 3.4: Теперь класс поддерживает проверку имени хоста с помощью
ssl.SSLContext.check_hostname
и Server Name Indication (см.ssl.HAS_SNI
).Не рекомендуется, начиная с версии 3.6: keyfile и certfile обесцениваются в пользу context. Пожалуйста, Использовать
ssl.SSLContext.load_cert_chain()
или позвольтеssl.create_default_context()
выбрать сертификаты CA системы, которым доверяют, для вас.
Одно исключение определяется как атрибут модуля poplib
:
-
exception
poplib.
error_proto
¶ Исключение, возникшее при любых ошибках из этого модуля (ошибки из модуля
socket
не обнаружены). Причина исключения передается конструктору как строка.
См.также
Модуль imaplib
стандартный модуль Python IMAP.
- Часто задаваемые вопросы о Fetchmail
- Часто задаваемые вопросы о клиенте fetchmail POP/IMAP собирают информацию о вариантах сервера 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 (подобный r-командам UNIX), чтобы зарегистрироваться в сервер 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
()¶ Ничего не делает. Может быть использовано для поддержания соединения (keep-alive).
-
POP3.
quit
()¶ Подпись: зафиксировать изменения, разблокировать почтовый ящик, удалить подключение.
-
POP3.
top
(which, howmuch)¶ Восстанавливает заголовок сообщения плюс линии howmuch сообщения после заголовка сообщения номер which. Результат имеет форму
(response, ['line', ...], octets)
.ГЛАВНАЯ команда POP3 этот метод использование, в отличие от команды 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)
В конце модуля имеется раздел тестирования, содержащий более подробный пример использования.