Прежде всего, у меня нет примера кода на этом компьютере, но у меня есть пример, который очень похож.
(http://docs.python.org/library/email-examples.html)
4-й.
Моя проблема заключается в этом куске кода
counter = 1
for part in msg.walk():
# multipart/* are just containers
if part.get_content_maintype() == 'multipart':
continue
# Applications should really sanitize the given filename so that an
# email message can't be used to overwrite important files
filename = part.get_filename()
if not filename:
ext = mimetypes.guess_extension(part.get_content_type())
if not ext:
# Use a generic bag-of-bits extension
ext = '.bin'
filename = 'part-%03d%s' % (counter, ext)
counter += 1
fp = open(os.path.join(opts.directory, filename), 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
Когда я получаю электронные письма, которые не имеют имен файлов в кодировке iso или utf, этот код работает нормально.
Но когда имя вложения закодировано в iso, имя файла находится не внутри get_filename, а имя файла находится в закодированной форме внутри part ["Content-type"] (я верю)
Приведенный выше пример пытается угадать расширение и, если он не может найти имя файла, он просто дает ему имя файла части. Что бы я хотел, это имя файла.
Кто-нибудь имел дело с такими проблемами, и что вы делали, чтобы исправить это?