2015-08-15 116 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