Как программно получить файл из почты (через протоколы IMAP или POP3)?
Для получения файлов из электронной почты используются протоколы IMAP или POP3. Оба протокола позволяют получать и отправлять электронные сообщения, но есть небольшие отличия в их работе.
Чтобы получить файл из почты, необходимо подключиться к почтовому серверу через IMAP или POP3, авторизоваться и скачать сообщение с нужным файлом.
IMAP
IMAP (англ. Internet Message Access Protocol) - это протокол получения электронной почты. Используя IMAP можно подключиться к любому почтовому серверу и просмотреть не только заголовки писем, но и их содержимое. IMAP сохраняет письма на сервере, а не на вашем устройстве. Это позволяет работать с почтой с разных устройств, где вы будете видеть одинаковые письма.
Чтобы получить файл из IMAP, необходимо выполнить следующие шаги:
- Подключиться к почтовому серверу
import imaplib
server = 'imap.gmail.com'
username = 'example@gmail.com'
password = 'password'
mail = imaplib.IMAP4_SSL(server)
mail.login(username, password)
- Выбрать папку, в которой находится нужное сообщение
mailbox = 'INBOX'
mail.select(mailbox)
- Отфильтровать сообщения, чтобы осталось только те, которые содержат нужный файл
result, data = mail.uid('search', None, 'SUBJECT "Subject of the email"')
- Получить UID первого письма с нужным заголовком
latest_email_uid = data[0].split()[0]
- Подключиться к новому сообщению и получить его содержимое
result, data = mail.fetch(latest_email_uid, '(RFC822)')
raw_email = data[0][1].decode('utf-8')
- Разобрать содержимое сообщения, чтобы получить содержимое файла
import email
import os
email_message = email.message_from_string(raw_email)
for part in email_message.walk():
if part.get_content_type() == "application/octet-stream":
filename = part.get_filename()
if filename:
if not os.path.isdir(folder):
os.makedirs(folder)
filepath = os.path.join(folder, filename)
open(filepath, 'wb').write(part.get_payload(decode=True))
POP3
POP3 (англ. Post Office Protocol version 3) - это более старый протокол для получения электронной почты. Он скачивает полные сообщения на клиент, что может занять много места. Также, после скачивания сообщение удаляется с сервера. Но POP3 может быть полезен, если нужна быстрая загрузка сообщений.
Чтобы получить файл из POP3, необходимо выполнить следующие шаги:
- Подключиться к почтовому серверу
import poplib
server = 'pop.gmail.com'
username = 'example@gmail.com'
password = 'password'
mail = poplib.POP3_SSL(server)
mail.user(username)
mail.pass_(password)
- Выбрать папку, в которой находится нужное сообщение
mailbox = 'INBOX'
numMessages = len(mail.list()[1])
msgList = mail.list()
for i in reversed(range(numMessages)):
mailNum, size = msgList[1][i].decode().split(' ')
response, headerLines = mail.top(mailNum, 0)
for j in range(len(headerLines)):
if headerLines[j].decode("utf-8").startswith('Subject: '):
if 'Subject of the email' in headerLines[j].decode("utf-8"):
response, message = mail.retr(mailNum)
- Разобрать содержимое сообщения, чтобы получить содержимое файла
import email
import os
raw_email = '\n'.join(map(lambda x: x.decode(), message))
email_message = email.message_from_string(raw_email)
for part in email_message.walk():
if part.get_content_type() == "application/octet-stream":
filename = part.get_filename()
if filename:
if not os.path.isdir(folder):
os.makedirs(folder)
filepath = os.path.join(folder, filename)
open(filepath, 'wb').write(part.get_payload(decode=True))
Вот и все! Теперь вы знаете, как получить файл из почты с помощью протоколов IMAP или POP3. Успешной работы!
- Здравствуйте, хотел узнать как называется резинка которая стелется на кухонный стол, на которой можно резать
- Сколько стоит компас 3d v13 и является ли данный продукт устаревшим ПО?
- Я паял фильтр микрофона паяльником (nokia c5-00) и на месте где был припой образовалась черная ямка!
- Какая марка гитары классической по вашему мнению самая лучшая?
- Сколько стоит престижный автомобиль сегодня? Какая марка?
- Где скачать программу для вставки лиц в видео?