2015-08-15 117 views
1

我是新来的斯卡拉,我陷入了发送电子邮件...玩框架2.4发送电子邮件

我正在玩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="[email protected]" 
    password=abracadabra 
    debug=true 

}

我想要做的是发送电子邮件至当某个其他用户user_2借用user_1的书籍时,用户(例如user_1)。

在我的书中控制器我有这样的方法:

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

    val email = Email(
     subject, 
     "FROM <[email protected]>", 
     Seq("TO <"+email_user+">"), 

     bodyText = Some(msg) 
    ) 

} 

在下一个方法我称之为sendEmail方法,如果user_2借用USER_1

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()) 

} 

问题的一本书,是我不会收到任何错误或类似的东西,我不知道我做错了什么。

任何人都可以帮我吗?

非常感谢!

+0

似乎没有任何实际发送电子邮件的代码 - 您只需创建一个电子邮件案例类,但您实际上并未发送它 –

回答

3

我不相信你实际上是在发送电子邮件。 sendEmail方法只是创建Email类,但它不会执行任何其他操作,并且不会返回它。这实际上并不发送电子邮件。

据:https://github.com/playframework/play-mailer你应该通过调用MailerClient

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

在该例子使用的MailerClient在施工时注入控制器。

+0

谢谢! :) 至少现在我收到一个错误 EmailException:发送电子邮件至以下服务器失败:smtp.gmail.com:587 我改变了口脱默认的,25,但我米收到相同的错误... – Hkt

2

这是关于端口的最新评论(尚未有足够的评论意见)的答案:尝试使用端口465,因为您启用了SSL和TLS。也尝试关闭调试模式(只需删除它)。用我自己的谷歌帐户用appropariate发送方法检查你的代码,它工作正常。

+0

是的,它的工作,谢谢你! – Hkt