メール メッセージは、HTTP リクエストとしてアプリに送信されます。受信メール メッセージを処理するには、アプリケーションの構成でメールアドレスをサーブレットに関連付けてから、サーブレット コードをアプリに追加します。受信メールによって HTTP リクエストが生成され適切なサーブレットに渡されて、ハンドリングが行われます。
メールを受信するアプリの構成
新しくアプリケーションを作成すると、受信メールはデフォルトで無効になっています。明示的に有効にしていない場合、アプリに送信される受信メール メッセージは無視されます。
受信メールサービスを有効にするには、appengine-web.xml
構成ファイルと web.xml
構成ファイルを次のように変更します。
appengine-web.xml でメールを有効にする
受信メールサービスを有効にする inbound-services
セクションを追加して、appengine-web.xml
を変更します。
メール メッセージは、次の URL を使用する HTTP POST リクエストとしてアプリに送信されます。
/_ah/mail/<ADDRESS>
ここで <ADDRESS>
は、ドメイン名を含む完全なメールアドレスです。アプリがカスタム ドメインにデプロイされている場合でも、アプリはそのドメインのアドレスに送信されたメールを受信できないことに注意してください。
web.xml でメールを有効にする
以下の方法で、メールの URL をサーブレットにマッピングして web.xml
を変更します。
上記のスニペットでは、/_ah/mail/*
はアプリ宛のすべてのメールと照合されます。メール サーブレットは、App Engine にあるアプリの現在の提供バージョンで実行されます。
受信メッセージのパターンに基づく送信
アプリパターン マッチングが使用されている場合、次のコード スニペットに基づいたフィルタベースのアプローチを使用することを検討してください。
コンクリート ハンドラ
上記のコンクリート ハンドラは、次の web.xml
のスニペットを使用して登録されます。
security-constraint
ディレクティブはフィルタでは使用できないことに注意してください。ハンドラにセキュリティ ポリシーを適用するには別の方法を使用する必要があります。
抽象化ハンドラ
受信メールの処理
JavaMail API には、受信メール メッセージの解析に使用される MimeMessage
クラスが含まれています。MimeMessage
には、java.io.InputStream
と JavaMail セッションを受け入れるコンストラクタがあります。これには、空の構成を含めることができます。
次のような MimeMessage
インスタンスを作成します。
その後、各種メソッドを使用して message
オブジェクトを解析できます。
getFrom()
を呼び出して、このメッセージの送信者を返します。getContentType()
を呼び出して、メッセージのコンテンツ タイプを抽出します。getContent()
メソッドは、Multipart
インターフェースを実装するオブジェクトを返します。getCount()
を呼び出して、パーツ数を確認します。getBodyPart(int index)
を呼び出して、本文の特定の部分を返します。
受信メールを処理するようにアプリを設定したら、開発用サーバー コンソールを使用して、受信メール メッセージをシミュレートできます。開発用サーバーの起動方法など、詳細については、Java 開発用サーバーをご覧ください。ローカルの開発用サーバーでアプリケーションを起動した後、URL http://localhost:8888/_ah/admin/(ローカルの開発用サーバーにデフォルト ポートを使用していない場合は、「8888」の値を使用しているポートで置き換えます)を参照すると、アプリケーションにアクセスできます。
開発用サーバー コンソールの左側で [Inbound Mail] をクリックし、表示されたフォームに入力して [Send Email] をクリックします。