AWS SES 사용하기

쉽고 편리하게 E-mail를 고객한테 보내려면 Gmail SMTP를 사용하는 방법은 검색하면 많이 나온다. 이번 글은 spring 프로젝트에서 AWS SES를 설정하고 메일을 보내는 방법을 설명 하려고 한다.

AWS에서 서비스를 신청하고 도메인을 등록하고 권한을 부여하는 부분에 대한 내용은 생략하고 Spring에서 설정하고 메일을 보내는 방법에 대해 적으려고 한다.

◆Dependency 추가

<dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-ses</artifactId>
            <version>1.12.167</version>
</dependency>

◆Config Class

import com.amazonaws.auth.AWSStaticCredentialsProvider
import com.amazonaws.auth.BasicAWSCredentials
import com.amazonaws.services.simpleemail.AmazonSimpleEmailService
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration

class AwsSesConfig(

    @Value("\${aws_accesskey}")
    val accessKey: String,

    @Value("\${aws_secret}")
    val secretKey: String,

    @Value("\${aws_region}")
    val region: String,
) {
    @Bean
    fun amazonSimpleEmailService(): AmazonSimpleEmailService {
        return AmazonSimpleEmailServiceClientBuilder.standard()
            .withRegion(region)
            .withCredentials(
                AWSStaticCredentialsProvider(
                    BasicAWSCredentials(accessKey, secretKey)
                )
            )
            .build()
    }
}

환경변수로 AWS Crtedential 정보를 설정하고 그것을 이용하여 AmazonSimpleEmailService client를 생성하는 Bean을 만들어 준다.

◆ 간단한 메일 보내기

fun sendEmail() {
        val message = Message()
        message.withSubject(Content("this"))
        message.withBody(Body().withHtml(Content("This is test mail")))
        val destination = Destination().withToAddresses("apple@hotmail.com")
        awsSimpleEmailServiceClient.sendEmail(
            SendEmailRequest()
                .withSource("foo@hotmail.com")
                .withDestination(destination)
                .withMessage(message)
        )
    }

내용, 발신자, 수신자를 설정하고 sendEmail 함수를 호출하여 메일을 보낼 수 있다.

추후 sendBulkTemplatedEmail를 사용하여 다수의 수신자에게 메일을 보내는 방법에 대해 업데이트 할 예정이다.

 

 

https://gist.github.com/BlackthornYugen/1b3e1ff4426294e7054c9a7190e8f2cd

https://junho85.pe.kr/1449

'Spring boot' 카테고리의 다른 글

Querydsl 일반적인 사용 정리  (0) 2022.07.04
[Spring] 코드에서 Active Profile 가져오기  (0) 2022.01.09
[Spring] Cache  (0) 2022.01.03
[Spring] Maven Wrapper  (0) 2022.01.03
[Spring]JobRunr libary 사용  (0) 2021.12.19