Play Framework 2.4 发送邮件

Posted

技术标签:

【中文标题】Play Framework 2.4 发送邮件【英文标题】:Play Framework 2.4 sending email 【发布时间】:2015-08-15 16:39:47 【问题描述】:

我是 Scala 新手,发送电子邮件时遇到问题...

我正在与 Play 合作! 2.4 并且必须遵循 build.scala

"com.typesafe.play" %% "play-mailer" % "3.0.1"

在 application.conf 中:

play.mailer 
    host=smtp.gmail.com
    port=587 
    ssl=true
    tls=true
    user="testme@gmail.com"
    password=abracadabra
    debug=true

我正在尝试做的是向用户发送一封电子邮件,例如 user_1,当其他用户 user_2 从 user_1 借书时。

在我的图书控制器中,我有以下方法:

def sendEmail(email_user: String, subject: String, msg: String): Unit =  

    val email = Email(
      subject,
      "FROM <testme@gmail.com>",
      Seq("TO <"+email_user+">"),

      bodyText = Some(msg)
    )


在下一个方法中,如果 user_2 向 user_1 借了一本书,我将调用 sendEmail 方法

  def borrowBook(id_book: Long) = Action  implicit request =>
     val nr = Book.checkBook(id_book)
     val date = new Date()      

     if(nr > 0)
     
        val list = Book.getCarte(id_book)
        val no = Friend.isFriend(list.id_user, userInfo.id.get)
        if(no == 1) 
         Borrow.insert(Borrow(id_book, userInfo.id.get, date))

         sendEmail(userInfo.email, "Borrow book", "Your book has been borrowed")
         Ok(views.html.borrowBook())
         else Ok(views.html.warningBorrow())
     
     else Ok(views.html.failBorrow())

 

问题是我没有收到任何错误或类似的东西,而且我不知道自己做错了什么。

谁能帮帮我?

非常感谢!

【问题讨论】:

似乎没有任何代码实际发送电子邮件 - 您只是创建了一个电子邮件案例类,但您从未实际发送它 【参考方案1】:

我不相信您实际上是在发送电子邮件。 sendEmail 方法只是创建了 Email 类,但它不做任何其他事情,也不返回它。这实际上并没有发送电子邮件。

根据:https://github.com/playframework/play-mailer,您应该通过拨打MailerClient发送电子邮件

链接的示例显示了基本上将邮件客户端配置为通过特定服务器发送然后调用mailerClient.send(email)的代码:

在示例中,使用的MailerClient 在构造时被注入到控制器中。

【讨论】:

谢谢! :) 至少现在我收到一个错误 EmailException: Sending the email to the following server failed : smtp.gmail.com:587 我将端口更改为默认端口 ,25,但我收到了同样的错误.. .【参考方案2】:

这是您对端口的最新评论(还没有足够的代表发表评论)的答案:尝试使用端口 465,因为您已启用 SSL 和 TLS。还尝试关闭调试模式(只需删除它的行)。使用我自己的谷歌帐户使用适当的发送方法检查了您的代码,它运行良好。

【讨论】:

以上是关于Play Framework 2.4 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework - 不同语言的 TemplateLoader

如何使用 play framework 1.x 和 Amazon SES 发送电子邮件?

Play Framework 2.2 的邮件程序是啥?

如何在 java Play Framework 中发送推送通知

Play Framework,Scala - 仅当有新数据可用时才向客户端发送 websocket 消息

有没有办法在 Play 框架中限制发送的电子邮件?