Home Kotlin AWS SESClient를 활용한 이메일 송신
Post
Cancel

Kotlin AWS SESClient를 활용한 이메일 송신

SES?

Amazon Simple Email Service 이며 온프레미스 환경에서 STMP 서버를 구축할 필요없이 관련 기능을 제공해주는 서비스

SES 환경설정하는부분은 생략한다. 매우 간단하니 직접 찾아보자.

의존성(Kotlin DSL)

1
2
implementation(platform("software.amazon.awssdk:bom:2.17.294"))
implementation("software.amazon.awssdk:ses")

MainSender

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class MailSender {
    private val credential by lazy {
        AwsBasicCredentials.create(
            YOUR_ACCESS_KEY_ID,
            YOUR_SECRET_ACCESS_KEY
        )
    }

    private val client by lazy {
        SesClient.builder()
            .region(Region.AP_NORTHEAST_2)
            .credentialsProvider(StaticCredentialsProvider.create(credential))
            .build()
    }

    private fun wrapContent(raw: String) = Content.builder()
        .charset("UTF-8")
        .data(raw)
        .build()

    fun send(to: String, subject: String, body: String) {
        val dest = Destination.builder()
            .toAddresses(to)
            .build()

        val message = Message.builder()
            .subject(wrapContent(subject))
            .body(Body.builder().html(wrapContent(body)).build())
            .build()

        val request = SendEmailRequest.builder()
            .source(MY-EMAIL) // source는 SES에 등록된 식별자이여야 한다.
            .destination(dest) // sandbox 모드인 경우 SES에 등록된 이메일에게만 송신가능하다.
            .message(message)
            .build()

        client.sendEmail(request)
    }
}
This post is licensed under CC BY 4.0 by the author.

Spring on AWS ECS Fargate, Prometheus, Grafana, ECS discovery service를 활용한 모니터링 환경 구축

Github action 종속 job의 결과에 따라 slack 전송