機種依存文字をメール送信してみる
メール送信するとき、文字コードを iso-2022-jp にすると、何かと便利なので使いたいが、機種依存文字があると文字コード変換でエラーになってしまう。
対策として、NkfPython を使って送信してみたらうまくいったのでメモしておく。
#coding:utf-8 import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate from nkf import nkf def make_message(from_addr, to_addr, subj, body): encoding = 'iso-2022-jp' m_body = nkf('-Wj', body.encode('utf-8')) msg = MIMEText(m_body, 'plain', encoding) msg['Subject'] = Header(subj, encoding) msg['From'] = from_addr msg['To'] = to_addr msg['Date'] = formatdate() return msg def send(from_addr, to_addr, msg): s = smtplib.SMTP('smtp-server') s.login('user_account','password') s.sendmail(from_addr, [to_addr], msg.as_string()) s.close() if __name__ == '__main__': from_addr = 'from@example.com' to_addr = 'to@example.com' subject = u'あいうテスト①㍑' body = u'あいうゼンカクカナハンカクカナ㍑だよ③②①' message = make_message(from_addr, to_addr, subject, body) send(from_addr, to_addr, message)