DjangoでISO-2022-JPなメール送信

現在このブログは中途半端に移行されていますので、画像が表示されなかったり、レイアウトが崩れたりする可能性があります。
この記事を旧ブログで閲覧するには、以下のURLからご覧ください。
http://blog2.monospace.jp/2008/01/29/django_jis_email/

この話って一時期Lingrのdjango-jaでも話題になってましたけど、 今は普通にエンコードを指定できるようになってるんですね。 [追記:2008/03/04] soundkitchen氏からのコメントのとおり、全然指定できるようになっていませんでした。 運良く化けない端末で受信していただけでした。早く使えるようになるといいなあ。 登録完了メールだとかコメントがあったときのメールだとかのあたりで使ってみました。 メールの本文とタイトルはテンプレートファイルを用意して変更しやすいようにしました。 ちょっとアクティベーションメールを送るあたりのコードを。 [python] from django.core.mail import SMTPConnection, EmailMessage from django.template.loader import get_template from django.template import Context def create_inactive_user(request): """create an inactive user and send a email including activation key""" ### (略)formをバリデートしたり、new_userを作ったりしてとりあえずnew_user.is_activeをFalseにする ### タイトルが書いてあるテンプレート t = get_template('email/registration_subject.txt') ### 末尾の改行は消しておく(これContextいらない場合も指定しないとだめかな?Noneとかでいいかな) subject = t.render(Context({})).rstrip('\n') ### 本文が書いてあるテンプレート t = get_template('email/registration_body.txt') ### テンプレートにはユーザー名とかアクティベーションキーを入れます c = Context({ 'user': new_user, 'activation_key': activation_key }) body = t.render(c) to = [new_user.email] ### settings.pyで指定した送信サーバとポートを使うようにする ### デフォルト(localhostの25番)でいい場合は、ここいらないかも connection = SMTPConnection() connection.host = settings.SMTP_HOST connection.port = settings.SMTP_PORT ### EmailMessageインスタンス作成 email = EmailMessage( subject=subject, body=body, from_email='送信元のアドレス', to=to, #bcc=[], connection=connection, ### デフォルトの場合これもいらない #headers={} ) ### ここでエンコーディングをISO-2022-JPに email.encoding = 'ISO-2022-JP' ### あとは送るだけ email.send() ### (略)成功したらリダイレクトしたりする [/python] まあ、こんな感じで今のところちゃんと動いてます。 コードへの突っ込みを歓迎しています。
Posted at: 
2008/01/29 23:30:27
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2008/01/29/django_jis_email/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment