Playframework 2.0では、Play 1.xの場合ほど簡単にメールを送信することはできません( Play FrameworkでSMTPサーバーとしてsendmailを使用する に関するコメントを参照)。すぐに使えるメーラー機能はありません...では、どうすればメールを送信できますか?
Playframework 2.xを機能させるには、Mailのプラグインが必要です。開発者がEメールを機能させるのは簡単だと感じたため、コアに追加されなかったため、プラグインを作成する方がよいと判断しました。しかし、グーグルグループでのメッセージの急増は、彼らがそれを間違えたことを示唆しました...人々はPlay1.xと同じ機能を期待していました。
コミュニティから期待されるように、プラグインはすぐに作成されました。 https://github.com/playframework/play-mailer を参照してください。
注目すべきプラグインも増えるでしょうが、これはコア開発者によってサポートされているタイプセーフなので、最もよく維持されると思います。
受け入れられた答えは、Playには電子メールを送信するためのプラグインが必要であるというものです。これは誤りです。 PlayアプリにJVMメーリングライブラリを簡単に適合させることができます。これは、Apache Commons Emailを使用した例であり、 here と独自の製品コードから単純化するように適合されています。
import org.Apache.commons.mail._
import scala.util.Try
private val emailHost = Play.configuration.getString("email.Host").get
/**
* Sends an email
* @return Whether sending the email was a success
*/
def sendMail(from: (String, String), // (email -> name)
to: Seq[String],
cc: Seq[String] = Seq.empty,
bcc: Seq[String] = Seq.empty,
subject: String,
message: String,
richMessage: Option[String] = None,
attachment: Option[Java.io.File] = None) = {
val commonsMail: Email = if(mail.attachment.isDefined) {
val attachment = new EmailAttachment()
attachment.setPath(mail.attachment.get.getAbsolutePath)
attachment.setDisposition(EmailAttachment.ATTACHMENT)
attachment.setName("screenshot.png")
new MultiPartEmail().attach(attachment).setMsg(mail.message)
} else if(mail.richMessage.isDefined) {
new HtmlEmail().setHtmlMsg(mail.richMessage.get).setTextMsg(mail.message)
} else {
new SimpleEmail().setMsg(mail.message)
}
}
commonsMail.setHostName(emailHost)
to.foreach(commonsMail.addTo(_))
cc.foreach(commonsMail.addCc(_))
bcc.foreach(commonsMail.addBcc(_))
val preparedMail = commonsMail.
setFrom(mail.from._2, mail.from._1).
setSubject(mail.subject)
// Send the email and check for exceptions
Try(preparedMail.send).isSuccess
}
def sendMailAsync(...) = Future(sendMail(...))
電子メールの送信がPlayで非常に簡単に実行されることを考えると、プラグインがまったく推奨されていることに驚いています。プラグインによっては、Playバージョンをアップグレードしたい場合に害を及ぼす可能性があり、自分で達成するのに30LoCかかるものは価値があるとは思いません。私たちのコードは、Play2.0から2.1から2.2への変更なしのアップグレードで機能しました。
これまでのところ@Codemwnciに記載されているプラグインにはないため、添付ファイルをサポートするプラグインをすばやくハッキングしました。 チェックアウトできます 。