Как читать электронную почту, используя python и smtplib
Нашел много примеров, как отправлять почту, но как я могу читать входящие? Например яндекс.
import smtplib as smtp
email = "me@example.com"
password = "password"
server = smtp.SMTP_SSL('smtp.yandex.com')
server.set_debuglevel(1)
server.ehlo(email)
server.login(email, password)
server.auth_plain()
# server.get_and_print_your_inbox_magic_method()
server.quit()
2 ответа
Решение
Как уже говорилось, вам нужно:
- SMTP- сервер для отправки писем
- IMAP для чтения электронной почты
- POP3 для чтения электронной почты
IMAP более мощный, чем POP3; в общем, вы, вероятно, хотите использовать IMAP. POP3 удаляет электронные письма после их прочтения, в отличие от IMAP.
Для SMTP вы можете использовать Pythonsmtplib
, для IMAP можно использоватьimaplib
а для POP3 вы можете использоватьpoplib
(все из стандартной библиотеки). Однако все они довольно низкого уровня.
Я создал более абстрактные альтернативы, чтобы упростить задачу для всех:
- для отправки писем (SMTP)
- для чтения электронной почты (IMAP)
Вот пример Красной почты:
from redmail import EmailSender
# Configure sender
email = EmailSender(host="smtp.example.com", port=587)
# Send an email
email.send(
subject="An example email",
sender="me@example.com",
receivers=['you@example.com'],
text="Hello!",
html="<h1>Hello!</h1>"
)
И пример Red Box:
from redbox import EmailBox
from redbox.query import UNSEEN, SUBJECT
# Configure email box
box = EmailBox(host="imap.example.com", port=993)
# Select email folder
inbox = box['INBOX']
for msg in inbox.search(UNSEEN & SUBJECT("An example email")):
# Process the message
print(msg.subject)
print(msg.from_)
# Mark the message as read
msg.read()
Вы можете установить библиотеки:
pip install redmail redbox
Соответствующие ссылки
Красная коробка:
Красная почта: