Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для andreyka93
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343

Получить изображение из email'a

10.03.2017, 00:01. Показов 924. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет ребята, начал изучать пайтон и сразу взялся за проектик для коллеги, короче есть малина(Raspberry Pi) которая подключается к цифровой рамке через HDMI, и нужно чтобы малина с каким-то определенным интервалом проверяла имейл пользователя на наличие сообщение с прикрепленными изображениями и выводила это добро на экран цифровой рамки,
С малиной работать буду позже, хочу для начала разобраться как распарсить изображение можно.
Ниже прикрепляю добро какое у меня есть уже, я могу уже
- залогиниться на почтовом сервере,
- найти последний имейл
- открыть его и прочитать контент в файл, и вот в файле у меня есть текст

My email
[image: Inline image 1]

текст это хорошо, но как добраться до заветной картинки?
Буду благодарен за любые советы!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import imaplib
import email
 
log = "xxxxxx@gmail.com"
pasw = "xxxxxxxxx"
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(log, pasw)
mail.list
mail.select("inbox")
 
result, data = mail.search(None, "FROM", "andreymazur93@gmail.com")
 
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)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2017, 00:01
Ответы с готовыми решениями:

TCPDF ERROR: [Изображение] Не удалось получить изображение
Я использую TCPDF для создания PDF и заканчивая следующим сообщением об ошибке, когда я нажимаю ссылку для создания PDF: TCPDF ERROR: ...

Получить изображение с контрола
как мне получить определенную область с контрола в битмап?

Получить HLS изображение
Добрый день, такая ситуация, необходимо на основе RGB получить HSL. Вообщем то сам алгоритм уменя есть. В функцию с алгоритмом передаю...

4
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
10.03.2017, 03:49
Цитата Сообщение от andreyka93 Посмотреть сообщение
Python
1
if part.get_content_type() == "text/plain":
А по аналогии "image/gif" не парсится?
0
 Аватар для andreyka93
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343
10.03.2017, 21:05  [ТС]
Цитата Сообщение от shvyrevvg Посмотреть сообщение
А по аналогии "image/gif" не парсится?
я уже разобрался как, теперь из-за своей лени хочу чтобы имя бралось в файле такое же как и было при отправке, но нужно распарсить следующую строку 'name = "name.jpeg"', как из этого чуда достать name, при том чтобы это было в функции и принимались разные разрешения файлов и любые доступные имена,
у меня есть следующая идея, ищем слева направо символ ", справа налево ищем символ .
и вот между ними будет и имя
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.03.2017, 23:11
Достать файл из вложения (в примере txt - заменяем на нужный тип):
Python
1
2
3
4
5
6
7
msg_parts = [(part.get_filename(), part.get_payload(decode=True)) for part in msg.walk() if part.get_content_type() == 'text/plain']
for name,data in msg_parts:
if name != None: # вложенный текстовый файл
    print("Вложенный файл: "+name)
    f = open(name,'wb')
    f.write(data)
    f.close()
P.S. Пример не мой - сам пока до чтения вложений не добрался.
1
 Аватар для andreyka93
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343
11.03.2017, 12:53  [ТС]
я так же и сделал правда я в несколько линий разбил, потому что я с точками останова запускаю только начал учиться пайтону, и однострочники писать хоть и получается но тогда я не могу контролировать в отладчике все но спасибо за ответ!

Python
1
2
3
4
5
6
7
8
9
10
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)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2017, 12:53
Помогаю со студенческими работами здесь

Как получить изображение
Мне нужно проанализировать капчу. Мое приложение получает html-код, можете подсказать, как (или что почитать мне чтобы понять как) мне из...

Получить изображение экрана
Мне нужно получить в программу картинку с экрана монитора по пиксельно в ОС семейства Linux. Как лучше это сделать и каким образом...

Получить изображение по url
Мне необходимо получить изображение, его имя соответствует уникальному идентификатору Делаю следующим образом: <img...

Получить изображение в TreeNode
Привет всем! Подскажите, пожалуйста, возможно ли получить изображение сопоставленное элементу TreeNode в TreeView, минуя ImageList,...

Получить изображение из галереи
Есть Button, есть ImageView. Как по нажатию Button предоставить пользователю галерею, чтоб тот выбрал одно единственное изображение и оно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru