Search code examples
scalaplayframeworkslick

Sending a Mail to Gmail in scala playframework(2.6) slick


I am trying to send a mail to my gmail account . i am getting response as "Email Send". But I am not getting any mail. i am using Scal Playframework(2.6)

libraryDependencies += "com.typesafe.play" %% "play-mailer" % "6.0.0"
libraryDependencies += "com.typesafe.play" %% "play-mailer-guice" % "6.0.0"

This is far what i have done

Controller Class

package controllers
import play.api.libs.mailer._
import java.io.File
import java.io.File
import java.io.InputStream
import play.api.Environment
import org.apache.commons.mail.EmailAttachment
import play.api.libs.mailer._
import play.api.mvc.{AbstractController, Action, Controller, ControllerComponents}
import akka.http.scaladsl.model.HttpHeader.ParsingResult.Ok
import org.apache.commons.mail.EmailAttachment
import javax.inject.Inject
import play.api.libs.json.Json
class MailController  @Inject()(mailer: MailerClient, environment: Environment) extends Controller {

  def sendWithCustomMailer = Action {
  //  val mailer = new SMTPMailer(SMTPConfiguration("typesafe.org", 1234))
   // val id = mailer.send(Email("Simple email", "Mister FROM <[email protected]>"))

    val emailfrom="[email protected]"
    val emailto="[email protected]"
val subject ="Simple Email"
    val bodytext="A text message";

    val email = Email("Simple email", ""+emailfrom+"", Seq(""+emailto+""), bodyText = Some("A text message"))
    mailer.send(email)

    Ok(s"Email  sent!")
  }

And I have added this in my Application.conf

play.mailer {
  smtp.host = "smtp.gmail.com" // (mandatory)
  port = 465// (defaults to 25)
  ssl = true  // (defaults to no)
  tls = false // (defaults to no)
  tlsRequired =false // (defaults to no)
  user = "[email protected]" // (optional)
  password = "12121212" // (optional)
 // debug = false // (defaults to no, to take effect you also need to set the log level to "DEBUG" for the application logger)
  timeout = 600 // (defaults to 60s in milliseconds)
  connectiontimeout = 600 // (defaults to 60s in milliseconds)
  mock = true // (defaults to no, will only log all the email properties instead of sending an email)
}

Solution

  • I think you wrongly configured host part. You wrote smtp.host = "smtp.gmail.com" but correct value is host = "smtp.gmail.com".

    In my project working config for google smtp is following:

    play {
      mailer {
        host = "smtp.gmail.com"
        port = 587
        tls = yes
        user = "[email protected]"
        password = "xxxxxxx"
      }
    }