如何在Play 2.3和Scala 2.11中使用play-plugins-mailer?

时间:2014-11-25 15:02:44

标签: scala playframework

我正在尝试使用播放插件发送电子邮件:

https://github.com/playframework/play-mailer

我已按照github上的说明进行操作:将依赖项添加到build.sbt,使用指定的内容创建play.plugins(我是否需要以某种方式注册文件)?

但是我收到了编译错误:

object mailer is not a member of package play.api.libs

尝试导入时

import play.api.libs.mailer._

我在

上遇到另一个编译错误
val mail = use[MailerPlugin].email

找不到MailerPlugin和使用。

如何使这个工作?

注意:插件已正确下载(我可以在我的.ivy2目录中找到它),但它未在我的应用程序中列为依赖项。

我的build.sbt文件:

name := ...

version := "1.0-SNAPSHOT"

scalaVersion := "2.11.2"

resolvers += Resolver.typesafeRepo("releases")

//"mysql" % "mysql-connector-java" % "5.1.31"
libraryDependencies ++= Seq(
  "mysql" % "mysql-connector-java" % "5.1.24",
  "org.webjars" %% "webjars-play" % "2.3.0-2",
  "com.typesafe.play" %% "play-slick" % "0.8.0",
  "com.typesafe.play.plugins" %% "play-plugins-mailer" % "2.3.1",
  "org.mindrot" % "jbcrypt" % "0.3m"
)

fork in Test := false

lazy val root = (project in file(".")).enablePlugins(PlayScala)

我的play.plugins仅包含:

1500:com.typesafe.plugin.CommonsMailerPlugin

更新: 我从https://github.com/playframework/play-mailer下载了示例项目 并尝试使用sbt进行编译。它失败的原因完全相同。

2 个答案:

答案 0 :(得分:4)

看起来这个问题与typeafe repo中提供的插件版本有某种关系:

我已经从源代码构建了插件,将其发布到我的本地存储库,然后编译好了。

在示例应用的build.sbt中有:

resolvers += Resolver.file("LocalIvy", file(Path.userHome + File.separator + ".ivy2" + File.separator + "local"))(Resolver.ivyStylePatterns)

所以看起来作者在使用部署到官方存储库的插件编译应用程序时也遇到了问题。

更新: 好吧,它编译得很好,但在运行时失败java.lang.ClassNotFoundException: com.typesafe.plugin.CommonsMailerPlugin

更新2: 样本play.plugins也是错误的,正确的应该是:

1500:play.api.libs.mailer.CommonsMailerPlugin

然后继续工作

答案 1 :(得分:1)

README是最新版本(即将推出的版本)的最新版本。 截至2014年12月19日,Typesafe存储库中发布和提供的最新版本为2.3.1。如果您想使用此版本,则需要参考v2.3.1标记中的自述文件:https://github.com/playframework/play-mailer/tree/v2.3.1

对于即将推出的版本,我们决定打破兼容性,将Play邮件程序移动到自己的程序包中,并提供更好的实现。这就是为什么主分支中的文档不能与版本2.3.1一起使用的原因。