Форум сайта python.su
0
Доброе утро. Нужно из сохраненных писем вытаскивать аттачи, примеров масса, и решение для разных кодировок тоже есть:
def extract(msg,savedir,marker=''): if marker: marker=marker+'-' fp = open(msg) msg = email.message_from_file(fp) fp.close() for part in msg.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue filename = part.get_filename() if not(filename): continue print ' '+filename print part.get_content_charset() filename,enc=decode_header(filename)[0] if enc: filename=filename.decode(enc) filename=marker+filename fp = open(os.path.join(savedir, filename), 'wb') fp.write(part.get_payload(decode=1)) fp.close
Офлайн
0
Если кому интересно, вышел из положения обернув в try “опасную” часть. Получается что когда кодировка UTF-8 имя вложение уже готовое к использованию:
def extract(msg,savedir,marker=''): if marker: marker=marker+'-' fp = open(msg) msg = email.message_from_file(fp) fp.close() for part in msg.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue filename = part.get_filename() if not(filename): continue try: filename,enc=decode_header(filename)[0] if enc: filename=filename.decode(enc) except: print "Error filename:%s"%filename filename=marker+filename fp = open(os.path.join(savedir, filename), 'wb') fp.write(part.get_payload(decode=1)) fp.close
Отредактировано ikos2123 (Март 18, 2013 08:27:09)
Офлайн