Найти - Пользователи
Полная версия: Python 3, email
Начало » Python для новичков » Python 3, email
1
ruthven
Добрый день. Помогите, пожалуйста, выдрать аттач из письма. Все примеры, которые нашел, действуют примерно по одному плану:
response = server.retr(msgCount)
msg = email.message_from_bytes(b'\n'.join(response[1])
for part in msg.walk():
    print(part.get_content_type())
    if part.get_content_maintype() == 'multipart':
        continue
    if part.get('Content-Disposition') is None:
        print("no content dispo")
        continue
    filename = part.get_filename()
    
    fp = open(os.path.join(self.savedir, filename), 'wb')
    fp.write(part.get_payload(decode=1))
    fp.close

Но я не могу даже имени приаттаченного файла считать, get_filename() возвращает None (всё остальное тоже) вот письмо , которое я получаю с сервера сохранено pickle.dump'ом т.е. если потом сделать
import pickle
f = open('msg.dat', 'rb')
response = pickle.load(f)
f.close()
то в response будет, то что я получаю с сервера, т.е. response = server.retr(msgCount), в самом письме буквально две строчки, приаттаченный файл бинарный.
py.user.next
>>> import pickle
>>> import email
>>> 
>>> r = pickle.load(open('msg.dat', 'rb'))
>>> 
>>> m = email.message_from_bytes(b'\n'.join(r[1]))
>>> p = tuple(m.walk())[-1]
>>> n = p.get_filename()
>>> c = p.get_payload(decode=True)
>>> 
>>> n, c[:10]
('LSN_00003396_T6.lsn', b'\x0c\x00\x00\x00Nemesi')
>>>
ruthven
py.user.next Спасибо огромное, очень выручили.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB