【发布时间】:2015-12-24 09:51:11
【问题描述】:
我在使用 play-mailer 时尝试从 scala Play 框架 2.4 发送电子邮件,我已按照他们示例页面中的说明进行操作,但没有成功。
我已将依赖项添加到 build.sbt:
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-mailer" % "3.0.1"
)
在 application.conf 中我添加了以下内容:
play.mailer {
host=smtp.gmail.com
port=465
ssl=true
tls=true
user="testme@gmail.com"
password=abracadabra
}
最后是邮件类:
package controllers
import java.io.File
import javax.inject.Inject
import org.apache.commons.mail.EmailAttachment
import play.api.Configuration
import play.api.Play.current
import play.api.libs.mailer._
class Mail(mailer: MailerClient) {
def send = {
val cid = "1234"
val email = Email(
"Simple email",
"Mister FROM <from@email.com>",
Seq("Miss TO <to@email.com>"),
bodyText = Some("A text message"),
bodyHtml = Some("some data....")
)
mailer.send(email)
}
}
到目前为止没有编译错误,但是我不明白如何初始化这个类..我应该如何获得“MailerClient”实例?
在文档中写着“然后在你的路由器定义中,使用 trait MailerComponents”,代码示例如下:
import play.api._
import play.api.ApplicationLoader.Context
import router.Routes
import play.api.libs.mailer._
class MyApplicationLoader extends ApplicationLoader {
def load(context: Context) = {
new ApplicationComponents(context).application
}
}
class ApplicationComponents(context: Context) extends BuiltInComponentsFromContext(context) with MailerComponents {
lazy val myComponent = new MyComponent(mailerClient)
// create your controllers here ...
lazy val router = new Routes(...) // inject your controllers here
}
(我在application.conf中添加了“play.application.loader=SimpleApplicationLoader”)
但我得到以下编译错误:
D:\myApp\app\SimpleApplicationLoader.scala:12: not found: type MailerComponents
[error] class ApplicationComponents(context: Context) extends BuiltInComponentsFromContext(context) with MailerComponents {
[error] ^
[error] D:\myApp\app\SimpleApplicationLoader.scala:13: not found: value mailerClient
[error] lazy val applicationController = new controllers.Mail(mailerClient)
[error] ^
[error] two errors found
[error] (compile:compileIncremental) Compilation failed
有什么想法吗?
【问题讨论】:
标签: scala email playframework playframework-2.4