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
- Trackback:
- http://humming.via-kitchen.com/2007/05/30/send-email-via-templates/trackback/