機種依存文字をメール送信してみる

2011/08/18

メール送信するとき、文字コードを 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)

Python

Posted by skw