Email templates as scala templates in Play?

2019-03-12 23:04发布

问题:

In Play 1.2.4. you could send complex, dynamic e-mail using the standard templates mechanism and syntax (link), this looks realy cooll although I haven't used it. Is the mailer plugin of Play2.0 capable of such things?

回答1:

If by "complex, dynamic e-mail" you mean HTML email body based on template, you can do the same with Play 2.0.

You just have to create a new view based on a template, for instance mailBody.scala.html:

@(user:User)

<h3>Welcome @user.name</h3>
<br/>
....

Then, in your method which sends an email, you just have to call the render() method of your view:

public static void sendMail(User user) {

   MailerAPI mail = play.Play.application().plugin(MailerPlugin.class).email();
   mail.setSubject(...);
   mail.addRecipient(user.email);
   mail.addFrom(...);

   String body = views.html.mailBody.render(user).body();
   mail.sendHtml(body);

}