読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

GAE/J play framework1.2でメール送信する

java gae

f:id:treeapps:20140312221028p:plain
Play Framework等、GAE/Jでメール送信するサンプルです。
注意点もあるので解説します。

サンプルコード

Google App Engine SDK ver1.8.5時点のサンプルとなります。
以下はGAE/J上でPlay Framework1.2を使ったメール送信サンプルです。

package controllers;

import com.google.appengine.api.mail.MailService.Message;
import com.google.appengine.api.mail.MailServiceFactory;

import java.io.IOException;

import play.mvc.Controller;

public class Inquiry extends Controller {

    public static void index() {
        render();
    }

    public static void sendMail(String inquiryContents) {
        try {
            Message message = new Message();
            message.setSender("FROMのメールアドレス");
            message.setTo("TOのメールアドレス");
            message.setSubject("メール件名");
            message.setTextBody("メール本文");
            MailServiceFactory.getMailService().send(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
        render();
    }
}

注意点1:FROMのメールアドレス

ここにはGAEのAdmin Consoleにログインする時のメアドを設定します。
それ以外のメアドを設定しても、「Unauthorised Sender」というエラーが返ります。

注意点2:ローカル環境ではメールが送信されない

多分仕様なのだと思いますが、ローカル環境だと前述のサンプルでメールが送信されません。
しかし本番環境だとメールが送信されます。従ってぶっつけ本番になってしまいますね。

ここで注意点1のFROM設定は要注意です。
ローカルでは内部的にUnauthorised Senderのチェック処理まで走っていないっぽく、FROMにadmin colsole以外のメアドを指定してもエラーになりません。しかしデプロイして本番環境で試すと、「Unauthorised Sender」になります。これは注意した方がいいですね。

作ればわかる!Google App Engine for Javaプログラミング

作ればわかる!Google App Engine for Javaプログラミング

すっきりわかるGoogle App Engine for Javaクラウドプログラミング

すっきりわかるGoogle App Engine for Javaクラウドプログラミング