機種依存文字をメール送信してみる
メール送信するとき、文字コードを 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)
