2009-03-04 [vim] Vim Tips
■[python][django] Djangoでメール送信〜文字化け(全角マイナスなどの)対応

djangoでメール送信する時の話。
iso2022jpでメール送信しようとすると全角マイナス('−')などが文字化けするので、これを文字化けしないように対応してやる
id:tokibitoや@shin_no_sukeにサポートしてもらい、以下ソースコードのsend_mailで対応。
import string import commands import re from django.conf import settings from django.core import mail from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate, parseaddr, formataddr class JPMimeText(MIMEText): def __setitem__(self, name, val): if name.lower() == ('subject'): val = Header(val.encode('iso-2022-jp','replace'), 'iso-2022-jp',) elif name.lower() == ('to'): val = ','.join(val) elif name.lower() == ('cc'): val = ','.join(val) elif name.lower() == ('bcc'): val = ','.join(val) MIMEText.__setitem__(self, name, val) def send_mail(subject,body,to_list,from_=None,cc_list=None,bcc_list=None): """メール送信""" if not from_: from_ = settings.MAIL_FROM #DjangoのEmailMessageでは適切なSubjectにならないのでPythonのモジュール使う # 機種依存文字の対応。 # 'uff0d' -> '−' # 'uff5e' -> '〜' # 'u2225' -> '‖' # 'uffe0' -> '¢' # 'uffe1' -> '£' # 'uffe2' -> '¬' mapping = { u'\uff0d': u'\u2014', u'\uff5e': u'\u301C', u'\u2225': u'\u2016', u'\uffe0': u'\u00A2', u'\uffe1': u'\u00A3', u'\uffe2': u'\u00AC', } re_jis = re.compile(ur'[%s]' % ''.join(mapping)) body = re_jis.sub(lambda m:mapping[m.group()], body) msg = JPMimeText(body.encode('iso-2022-jp','replace'), \ 'plain', 'iso-2022-jp') msg['Subject'] = subject msg['From'] = from_ msg['To'] = to_list if cc_list: msg['Cc'] = cc_list if bcc_list: msg['Bcc'] = bcc_list msg['Date'] = formatdate() c = mail.SMTPConnection() c.open()
使い方例
send_mail_basic(u'タイトル',u'ぼでぃー―〜‖¢£¬', ['to@example.com'], ['from@example.com'], ['cc@example.com'], ['bcc@example.com'])
コメントを書く
トラックバック - http://d.hatena.ne.jp/shohu33/20090304/1236160467
リンク元
- 28 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4SUNA_jaJP260JP260&q=excel+遅い
- 23 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=cakephp+postgis+point&btnG=検索&lr=
- 11 http://www.google.co.jp/search?hl=ja&q=excel+起動が遅い&meta=lr=&aq=0r&oq=excel きどう
- 9 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=iUo&pwst=1&q=rails+日付+フォーマット&revid=1011826259&ei=yFWuSbXrEMzPkAW7j7SxBg&sa=X&oi=revisions_inlin
- 8 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=centos+ログイン+gui&num=50
- 7 http://www.google.co.jp/reader/view/
- 7 http://www.google.co.jp/search?hl=ja&q=PHP+ブラウザ+判別&meta=lr=lang_ja
- 6 http://www.google.co.jp/search?q=centos+ホスト名&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP306JP306
- 6 http://www.google.co.jp/search?sourceid=navclient&aq=h0&oq=&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP311&q=クラスター分析
- 5 http://reader.livedoor.com/reader/

