Created
August 18, 2021 16:11
-
-
Save tombasche/be4cf6f5c654564e0f496e94991433cd to your computer and use it in GitHub Desktop.
Basic email client using AWS SES + Spring + Kotlin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.myapplication.email | |
import arrow.core.Either | |
import org.springframework.stereotype.Component | |
import software.amazon.awssdk.services.ses.SesClient | |
import software.amazon.awssdk.services.ses.model.Body | |
import software.amazon.awssdk.services.ses.model.Content | |
import software.amazon.awssdk.services.ses.model.Destination | |
import software.amazon.awssdk.services.ses.model.Message | |
import software.amazon.awssdk.services.ses.model.SendEmailRequest | |
@Component | |
class EmailClient( | |
val awsEmailClient: SesClient | |
) { | |
fun send(email: Email): Either<Throwable, String> { | |
val destination = Destination.builder() | |
.toAddresses(email.to) | |
.build() | |
val content = Content.builder() | |
.data(email.body) | |
.build() | |
val sub = Content.builder() | |
.data(email.subject) | |
.build() | |
val body = Body.builder() | |
.html(content) | |
.build() | |
val msg = Message.builder() | |
.subject(sub) | |
.body(body) | |
.build() | |
val emailRequest = SendEmailRequest.builder() | |
.destination(destination) | |
.message(msg) | |
.source(email.from) | |
.build() | |
return Either.catch { | |
awsEmailClient.sendEmail(emailRequest).messageId() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment