Получить изображение из email'a - Python
Формулировка задачи:
Привет ребята, начал изучать пайтон и сразу взялся за проектик для коллеги, короче есть малина(Raspberry Pi) которая подключается к цифровой рамке через HDMI, и нужно чтобы малина с каким-то определенным интервалом проверяла имейл пользователя на наличие сообщение с прикрепленными изображениями и выводила это добро на экран цифровой рамки,
С малиной работать буду позже, хочу для начала разобраться как распарсить изображение можно.
Ниже прикрепляю добро какое у меня есть уже, я могу уже
- залогиниться на почтовом сервере,
- найти последний имейл
- открыть его и прочитать контент в файл, и вот в файле у меня есть текст
My email
[image: Inline image 1]
текст это хорошо, но как добраться до заветной картинки?
Буду благодарен за любые советы!
Листинг программы
- import imaplib
- import email
- log = "removed@mail.ru"
- pasw = "xxxxxxxxx"
- mail = imaplib.IMAP4_SSL('imap.gmail.com')
- mail.login(log, pasw)
- mail.list
- mail.select("inbox")
- result, data = mail.search(None, "FROM", "removed@mail.ru")
- ids = data[0]
- id_list = ids.split()
- latest_email_id = id_list[-1]
- result, data = mail.fetch(latest_email_id, "(RFC822)")
- raw_email = data[0][1]
- #continue inside the same for loop as above
- raw_email_string = raw_email.decode('utf-8')
- # converts byte literal to string removing b''
- email_message = email.message_from_string(raw_email_string)
- # this will loop through all the available multiparts in mail
- for part in email_message.walk():
- if part.get_content_type() == "text/plain": # ignore attachments/html
- body = part.get_payload(decode=True)
- save_string = str("Dumpgmailemail_" + str(latest_email_id) + ".txt")
- # location on disk
- myfile = open(save_string, 'w')
- myfile.write(body.decode('utf-8'))
- # body is again a byte literal
- myfile.close()
- else:
- continue
- file = open("1.txt","w")
- file.write(raw_email_string)
Решение задачи: «Получить изображение из email'a»
textual
Листинг программы
- raw_email_string = raw_email.decode('utf-8')
- email_message = email.message_from_string(raw_email_string)
- payloads = email_message.get_payload()
- for payload in payloads:
- if(payload.get_content_type() == 'image/jpeg'):
- file_name = payload.get_filename()
- open(file_name, 'wb').write(payload.get_payload(decode=True))
- imaplib.IMAP4.logout(mail)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д