app/services/notification/AWSMailClient.scala (29 lines of code) (raw):

package services.notification import aws.AwsAsyncHandler.awsToScala import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceAsync import com.amazonaws.services.simpleemail.model._ import javax.inject.Inject import models._ import play.api.Logging import scala.concurrent.ExecutionContext class AWSMailClient @Inject() (amazonMailClient: AmazonSimpleEmailServiceAsync)( implicit exec: ExecutionContext ) extends Logging { def send(toAddress: String, request: SendEmailRequest): Attempt[String] = { val messageId = awsToScala(amazonMailClient.sendEmailAsync)(request).map(_.getMessageId) request.setDestination(new Destination().withToAddresses(toAddress)) Attempt.future(messageId) { case e => logger.warn("Failed to send email", e) Left( AMIableErrors( AMIableError( "Error sending email", "Error sending email, please try again.", 500 ) ) ) } } }