Google App Engineでもうちょっとがんばってみる:メール送信プログラム

白石俊平(あゆた)
2008-04-11 18:00:00
  • このエントリーをはてなブックマークに追加

メール送信機能

 メールを送信している部分のソースコードは以下のようになる。

# ユーザの表示名とメールアドレスを取得
nickname = user.nickname()
mailAddr = user.email()

# ログを残す
logging.debug("%s<%s>にメールします", nickname, mailAddr)
# (1) メール送信
mail.send_mail(sender="xxx.xxx@gmail.com",
       to="%s<%s>" % (nickname, mailAddr),
       subject="こんにちは!%sさん" % nickname,
       body="""
拝啓、%sさん
お世話になっております。builderです。
そしてさようなら。
""" % nickname)

 メール送信に使用しているのは、google.appengine.api.mail.send_mail()関数だけだ。

 関数の使用方法も、ソースを見れば一目瞭然だろう。

 sender(メールの送信者)に指定するアドレスは、アプリケーションの管理者として指定した、Googleアカウントのメールアドレスでなければならないことに注意。ローカル環境ではどんなアドレスを指定してもエラーにならないが、実際App Engineに登録して動かす際エラーが発生する。

 メールを送信するには、send_mail()以外にもEmailMessageクラスを使うと言う方法もある。こちらも、クラスの属性としてメールの情報を設定すると言うだけなので、説明は省略する。気になる方はこちらのリファレンスを見てほしい。

開発用サーバ上でメールを送信するには

 ローカルの開発用サーバでメール送信をテストするには、起動コマンドに適切なオプションを指定する必要がある。オプションには以下のようなものがある。

--smtp_host・・・SMTPサーバのホスト名 --smtp_port・・・SMTPサーバのポート --smtp_user・・・SMTP認証に用いるユーザ名 --smtp_password・・・SMTP認証に用いるパスワード

 これらのオプションを付与すると、起動コマンドは以下のようになる。

dev_appserver.py --smtp_host=localhost --smtp_port=25 builder-example2/

 また、sendmailコマンドが利用可能なシステムであれば、「--enable-sendmail」と言うオプションを指定することで、同コマンドを用いたメール送信を行うことも可能だ。

ロギングについて

 先ほどのソースコードで、ロギングを行っている部分があった。

# ログを残す
logging.debug("%s<%s>にメールします", nickname, mailAddr)

 これは、Python標準のloggingモジュールを使用している。debug()関数を使用したデバッグメッセージは通常表示されないが、開発サーバに「--debug」オプションを指定することで表示できるようになる。

 また、App Engineで公開中のアプリケーションログについては、管理コンソールから確認することができる。

ログ一覧
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]