1
首先,我沒有這臺計算機上的代碼示例,但我有一個非常相似的示例。ISO編碼的附件名稱和python
(http://docs.python.org/library/email-examples.html)
的第四之一。
我的問題在於這段代碼
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中,但文件名以部分[「Content-type」](i belive)編碼形式。
上述示例嘗試猜測擴展名如果找不到文件名,它只是給它一個文件名。我想要的是文件名。
有沒有人處理過這些問題,你做了什麼來解決它?
給出帶有編碼文件名的電子郵件的示例。該代碼適用於我遇到的任何電子郵件。 – nosklo 2009-01-22 19:58:02