Tag/mail

テンプレートを使ってのメール送信

コメントやトラックバックを受け取ったときにメールを飛ばすようにしていたのですが、やっぱソース中にメールの内容とか書いてると見づらいし、内容を変更したくなった時とかかなり大変。

で、「何か良い方法はないかなぁ?」なんてネットを徘徊していると rossp.org さんにいい感じの記事が。どうやらテンプレートエンジンでメール本文をレンダリングする模様。まさにこういうのを探してた!

具体的には、とりあえず受け取りたいメール内容のテンプレートを作成。今回はとりあえず mail.txt とかにしてみた。中身はまだかなり適当。

{{ title }}

Entry Url : http://{{ site.domain }}{{ object.get_absolute_url }}

で、後は views.py とかメール送信したい所でテンプレートエンジンを使って本文を組み立ててメールを送信する。

以下は views.py の抜粋

from django.core.mail import send_mail
from django.template import loader, Context
from django.contrib.sites.models import Site

# (省略)
if form.is_valid():
    # コメントの保存。
    comment = form.save()

    # ココからメール処理。
    title = 'Post new Comment.'
    t = loader.get_template('mail.txt')
    c = Context({
        'title' : title,
        'object' : comment,
        'site' : Site.objects.get_current(),
    })

    send_mail(title, t.render(c), 'webmaster@example.com',
              ['hige@example.com',], fail_silently=False)

    return HttpResponseRedirect(comment.entry.get_absolute_url())

この形で作っておけば、何かと変更したくなってもすぐに対応出来て素敵過ぎます。 やっぱりまだまだ知らない事が多いなぁ。としみじみ実感。

トラックバック受信時も同じ様な形でメール送信を実装。これで気まぐれにちょくちょくメール内容とか修正出来るし、外向けにメールを飛ばすのも苦にならなそう。

また一つ Django が好きになりましたとさ。

ps. tenkao さんの コチラ おかげでまた一つサイトのデザインが fixed に近づきました♪本当にありがとうございます。

Posted at: 
2007/05/30 03:31:23
0 Comments
0 TrackBacks
Tags: 
Django
mail
Python
templates
Trackback: 
http://humming.via-kitchen.com/2007/05/30/send-email-via-templates/trackback/

Categories

Archives