原口 豊(はらぐち・ゆたか)
大手証券会社システム部に在籍後、1998年ベイテックシステムズ(現サテライトオフィス)を設立し、社長就任。2008年に、いち早くクラウドコンピューティングの可能性に注目し、GoogleApps(TM)導入サポートを開始。導入実績は、ガリバー、アデランス、三井倉庫などの大手企業から、中堅・中小企業まで、600社以上。「組織&グループカレンダー for Google Apps」など、多数のテンプレートを無償提供するなど、Google Appsの普及に尽力。Google Enterprise Day 2011ではパートナーアワードを3年連続で受賞した。

幅広いWebアプリケーションに応用できるメール送信機能

複数の宛先へまとめて連絡したり、問い合わせがあったことを担当者へ知らせたりするなど、さまざまなWebアプリケーションで利用されているメール送信機能。そこで今回は、Google App Engineを使ったメール送信の方法を紹介しよう。

通常は入力フォームなどと組み合わせるのが一般的だが、ここではその基礎としてURLへアクセスした際に特定の宛先へメールを送るという、ごくシンプルな機能について解説していきたい。

メール送信のWebアプリケーションを作成するにあたり、最初にやっておきたいのがWebアプリケーションの登録だ。Google App Engine Launcherの「Dashboard」ボタンでダッシュボードを開き、右上の「My Applications」をクリック。「Create Application」から、第2回と同様の方法で新規Webアプリケーションが登録できる。

Google App Engine Launcherの「Dashboard」ボタンをクリック

ダッシュボードを開き、右上の「My Applications」をクリック

「Create Application」から新規Webアプリケーションを登録する

以前紹介したようにアプリケーションIDなどを入力したら、下部の「Create Application」をクリックして登録は完了だ

実際にメールを送信してみよう

次は、メール送信に必要な各種ファイルを準備する。今回のメール送信で使うのは「__init__.py」「app.yaml」「index.py」という3つのファイルと、「images」フォルダ内に収めたアイコン画像「favicon.ico」だ。

本連載はプログラミングを覚えるのではなく、あくまでもGoogle App Engineの機能を体感してもらうことが主目的のため、ここではサンプルのソースコードを用意してみた。それでは各ファイルの内容を簡単に見ていこう。

「__init__.py」

pythonでは、この「__init__.py」を配置したフォルダがライブラリとして認識される仕組みになっており、今回のように配下のフォルダを利用するような場合に必要だ。なお、中身は何も書かず空のままで構わない。

「app.yaml」

前回の記事で自動生成されたものとほとんど同じだが、画像を使用する関係から一部変更されている。まず「default_expiration:」は、画像など静的ファイルのキャッシュ期間を設定することで、HTTPリクエストを減らすためのものだ。

今回は画像を配下のフォルダに置くため、「static_files:」や「upload:」部分を変更。さらに「script:」項目ではスクリプトファイル「index.py」を指定してある。1行目の「application:」は自分がデプロイするアプリケーションIDに変更しておこう。

「index.py」

これがメインとなるメール送信用のスクリプトファイルだ。まずは送信先メールアドレスと送信元メールアドレスを変更しよう。送信先の「To」は必須だが、「Cc」と「Bcc」については省略できる。

ここで注意したいのが、送信元(sender)に関してはGoogle App Engineの「Owner」もしくは「Developer」に登録されているメールアドレスしか指定できないこと。初期はOwnerしか定義されていないため、例えばOwner以外を送信元にする場合は、別途「Developer」の登録が必要になる。

登録の方法は、ダッシュボードの左上にあるプルダウンメニューから、メール送信用Webアプリケーションを選択。左側のメニューにある「Administration」の「Permissions」をクリックする。「Email:」欄に登録するメールアドレスを入力後、「Role:」で「Developer」を指定して「Invite user」をクリックしよう。あとは入力したメールアドレスに送られた認証用メールのURLをクリックすれば登録が完了する。

メールアドレス関連の定義が終わったら、件名とメール本文を書き換えておく。サンプルファイルではTEXT形式のメールになっているが、HTML形式を利用するには「#kw['html']」の「#」を削除しよう。ちなみに「index.py」はエンコード形式を「UTF-8」で保存することも忘れないように。

「images」内の「favicon.ico」

ブラウザのアドレスバーなどに表示されるアイコン。今回はサテライトオフィスのものを使用した。

送信元に「Owner」もしくは「Developer」以外を指定した場合、デプロイ後にWebアプリケーションのURLへアクセスしても「Unauthorized sender」というエラーが表示されてしまう

「Developer」を登録するには、まずダッシュボードの左上にあるプルダウンメニューから、メール送信用Webアプリケーションを選択し、左側のメニューにある「Administration」の「Permissions」をクリック

「Email:」欄に登録するメールアドレスを入力後、「Role:」で「Developer」を指定して「Invite user」をクリック。入力したメールアドレスに送られた認証用メールのURLをクリックすれば登録が完了する

ファイルの準備が整ったら、これらを任意のフォルダに格納する。あとは前回と同様の方法でデプロイすれば作業は完了だ。ブラウザから「http://アプリケーションID.appspot.com」へアクセスし、ブラウザ上に「success.」の文字が表示されればOK。送信先に指定したメールアドレスに、メールが届いているか確認しよう。

デプロイ作業が完了したら、ブラウザから「http://アプリケーションID.appspot.com」へアクセス。ブラウザ上に「success.」の文字が表示されればOKだ

念のため、送信先に指定したメールアドレスにメールが届いているかを確認しよう

今回は「メールを送るだけ」というシンプルなWebアプリケーションを紹介したが、冒頭でも述べた通り、このテクニックは幅広いWebアプリケーションに応用できる。開発担当者以外でも「こんなことができる」と知っているだけで、Google App Engineの活用方法が変わってくるはずだ。