Re: [問題] python email 附件中文檔名出現at00001

作者: lalelee (Yes We Can !)   2015-07-20 12:01:40
謝謝熱心回答^^
改成UTF-8之後已經OK, 感謝
※ 引述《cphsu (kent)》之銘言:
: https://docs.python.org/2/library/email.message.html
: ...
: An example with non-ASCII characters:
: msg.add_header('Content-Disposition', 'attachment',
: filename=('iso-8859-1', '', 'Fu綌aller.ppt'))
: Which produces
: Content-Disposition: attachment; filename*="iso-8859-1''Fu%DFballer.ppt"
: ...
: https://tools.ietf.org/html/rfc6266
: ...
: This example is the same as the one above, but adding the "filename"
: parameter for compatibility with user agents not implementing
: RFC 5987:
: Content-Disposition: attachment;
: filename="EURO rates";
: filename*=utf-8''%e2%82%ac%20rates
: ...
: ※ 引述《lalelee (Yes We Can !)》之銘言:
: : 小弟有一個python3 email函式如下:
: : 在附檔的部分使用英文檔名沒有問題, 但如果換成中文檔名, 寄給exchange 就會出現
: : at00001.pdf這樣的檔案,gmail則出現noname , 請問這要如何修正 ?
: : 有試著在這行
: : part.add_header('Content-Disposition', 'attachment;
: : filename="{0}"'.format(os.path.basename(f)))
: : 加上 format(os.path.basename(f).encode('utf-8').decode('big5')
: : 但檔名出現一串編碼...
: : 真心感謝每個抽空回答的人
: : import smtplib, os
: : from email.mime.multipart import MIMEMultipart
: : from email.mime.base import MIMEBase
: : from email.mime.text import MIMEText
: : from email.utils import COMMASPACE, formatdate
: : from email import encoders
: : import csv
: : def send_mail( send_from, send_to, subject, html, files=[]):
: : msg = MIMEMultipart()
: : msg['From'] = send_from
: : msg['To'] = COMMASPACE.join(send_to)
: : msg['Date'] = formatdate(localtime = True)
: : msg['Subject'] = subject
: : #本文
: : msg.attach( MIMEText(html,'html') )
: : #附檔
: : for f in files:
: : part = MIMEBase('application', 'pdf') #根據檔案型式置換
: : part.set_payload( open(f,"rb").read() )
: : encoders.encode_base64(part)
: : part.add_header('Content-Disposition', 'attachment;
: : filename="{0}"'.format(os.path.basename(f)))
: : msg.attach(part)
: : smtp = smtplib.SMTP('x.x.x', 25)
: : smtp.sendmail(send_from, send_to, msg.as_string())
: : smtp.quit()

Links booklink

Contact Us: admin [ a t ] ucptt.com