#準備
- 参考
https://github.com/playframework/play-mailer
これを元に作ってみる
- ダミーサーバー
smtp4dev
https://smtp4dev.codeplex.com/
##変更する設定ファイル
###build.sbt
libraryDependenciesに追記
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"com.typesafe.play" %% "play-mailer" % "3.0.1"
)
conf/application.conf
以下を追記
ローカルのダミーサーバーに送る
play.mailer { host=localhost port=25 }
Model
models.api.Mail.java
package models.api;
import play.libs.mailer.Email;
import play.libs.mailer.MailerClient;
public class Mail {
public void sendEmail(MailerClient mailerClient) {
Email email = new Email();
email.setSubject("Simple email 漢字");
email.setFrom("sender@play-testmail.com");
email.addTo("receiver@play-testmail.com");
email.setBodyText("A text message\r\n日本語");
mailerClient.send(email);
}
}
Controller
controllers.Application.java
package controllers;
import javax.inject.Inject;
import models.api.Mail;
import play.*;
import play.libs.mailer.MailerClient;
import play.mvc.*;
import views.html.*;
public class Application extends Controller {
@Inject MailerClient mailerClient;
public Result mail() {
Mail mailer = new Mail();
mailer.sendEmail(mailerClient);
return ok(send.render());
}
}
適当なViewを作り、routesでマッピングしてアクセス
##余談
最初はplay-mailerのgitページにあるJavaのソースをコピペして作ったが、
MailerClientにインスタンスが入っていないらしく、ぬるぽが出て動かなかった
そこでDIコンテナについて勉強したところ、どうやら自分でnewした先では@Injectが効かないらしい
コントローラーにやって貰ってとりあえずうまく行ったが、あまりこのコードには自信がない