Google App Engine であそんでみよう. (2)
ひきつづき,ZDNet builder の連載
Google App Engineでもうちょっとがんばってみる:メール送信プログラムをみながら.
Log
Python 標準のlogging モジュールを使う.開発用サーバでは, 標準出力に表示される.普通に起動すると, debug レベルのメッセージは表示されないが, --debug をつけることで表示させることができる.
Googleのホスティングする App Engine のサーバにデプロイした場合には,管理コンソールから表示させることができるらしい. 至れり尽くせりだ.
import logging logging.debug("Debug String")
Template
webapp ではDjangoのテンプレートエンジンが利用できる. Djangoはそれ自身独立したWeb Application Frameworkなのだが, Google App Engine では, テンプレートエンジンだけ取り出して利用するようだ. /usr/local/google_appengine/lib/django 以下にdjangoのフルパッケージが展開されているが, ユーザが利用するのは
/usr/local/google_appengine/google/appengine/ext/webapp/template.py
にあるラッパ.
from google.appengine.ext.webapp import template rendered = template.render( SOME_FILE_PATH, {TO_BE_REPLACED, REPLACEMENT})
と書くと, renderedにテンプレートを置換した文字列が入る.
文字列を時間するだけならPython標準の % 記法で置換してもよさそうなものだと思ったが, よく調べてみると, Djangoのテンプレート機構は遥かに強力で, 中でfor loopを回すこともできるらしい. さまざまなフィルタを使えるのもうれしいところ.
mail 送信機能も提供されている.
from google.appengine.api import mail mail.send_mail(sender="xxx@yyy", to="zzz@yyy", subject=SUBJECT, body=MESSAGE_BODY)
とするだけ. うーん,便利だ.
メイルアドレスのフォーマットをチェックして有効かどうかを判断する is_email_valid なんていう関数もある. 添付ファイルをつけたMIMEメッセージの作成もできるようだ.
mail.send_mail(sender="xxx@yyy", to="zzz@yyy", subject=SUBJECT, body=MESSAGE_BODY, attachments=[(NAME, CONTENT)])
簡単だ... ただ, 添付できるファイルのMIME Typeは限定されているようで, 指定したファイル名のextension から自動的に決定される. ざっと見たところでは, jpegとかgifとか一般的なものは一通りあるのだけど, ppt や doc などのMS Office系がない... まあ, あまり使わないだろうということか.
App Engineでは
とくに設定は必要ない. ただしsenderアドレスは gmail.com でないとだめらしい.