- AWS SES

 Amazon SES는 모든 애플리케이션에 통합하여 대량으로 이메일을 전송할 수 있는 클라우드 이메일 서비스 공급자입니다. Simple Mail Transfer Protocol(SMTP) 시스템을 구현하지 않아도 됩니다.

 

- 비용 & 호출 방법

애플리케이션이 Amazon Elastic Compute Cloud(Amazon EC2)에서 실행되는 경우 Amazon SES를 사용하여 추가 비용 없이 매월 62,000개의 이메일을 전송할 수 있습니다. AWS SDK를 사용하거나, Amazon SES SMTP 인터페이스를 사용하거나, Amazon SES API를 직접 호출하여 Amazon EC2에서 이메일을 보낼 수 있습니다.

 

AWS SES 클라이언트 설정

implementation platform('software.amazon.awssdk:bom:2.3.9')
implementation 'software.amazon.awssdk:sesv2:+'
    @Bean
    public SesV2Client getAmazonSimpleEmailServiceClient() {
        AwsCredentials credentials = null;
        if (StringUtils.isNotBlank(accessKey) && StringUtils.isNotBlank(secretKey)) {
            credentials = AwsBasicCredentials.create(accessKey, secretKey);
        }
        AwsCredentialsProvider provider = StaticCredentialsProvider.create(credentials);
        return SesV2Client.builder()
                .credentialsProvider(provider)
                .region(Region.of(sesRegion))
                .build();
    }

 

이메일 구성

try {
    Content subject = Content.builder().data(sendContent.getTitle()).build();
    Content content = Content.builder().data(thymeLeafHtml).build();
    Message msg = Message.builder().subject(subject).body(Body.builder().html(content).build()).build();
    EmailContent emailContent = EmailContent.builder().simple(msg).build();
    Destination destination = Destination.builder().toAddresses("test@naver.com").build();

    SendEmailRequest emailRequest = SendEmailRequest.builder()
                                                    .destination(destination)
                                                    .content(emailContent)
                                                    .fromEmailAddress("testSender@naver.com")
                                                    .build();

    sesV2Client.sendEmail(emailRequest);
} catch (SesV2Exception e) {
            log.error("Encountered an error processing sending email.\n");
            e.printStackTrace();
            throw e;
}

 

- 예외는 어떻게? (AWS SDK 사용의 경우)

예외를 사용하는 프로그래밍 언어로 AWS SDK를 사용하는 경우 SES 호출이 MessageRejectedException을 발생시킬 수 있습니다. 

 

- MIME

Multipurpose Internet Mail Extension으로 전자 우편을 위한 인터넷 표준 포맷입니다. 전자우편은 7비트 ASCII 문자를 사용하여 전송되기 때문에, 8비트 이상의 코드를 사용하는 문자나 이진 파일들은 MIME 포맷으로 변환되어 SMTP로 전송됩니다.

 

- MIME과 AWS SES의 관계?

AWS SES(Simple Email Service)는 이메일 메시지를 전송하기 위해 MIME(Multipurpose Internet Mail Extensions) 프로토콜을 사용합니다. MIME은 이메일 메시지를 텍스트, 이미지, 오디오, 비디오 등 다양한 멀티미디어 형식으로 변환하고, 인코딩 및 디코딩을 지원하는 표준 규약입니다. 이를 통해 다양한 종류의 파일을 이메일로 전송할 수 있습니다.

 

AWS SES는 MIME 형식을 준수하는 이메일 메시지를 전송할 수 있습니다. 이를 위해 AWS SES에서는 이메일 메시지 본문과 첨부 파일을 MIME 형식으로 구성해야 합니다. 이를 위해서는 이메일 메시지의 콘텐츠 유형(Content-Type), 인코딩 방식(Content-Transfer-Encoding), 그리고 각 파트의 경계선(Boundary)을 설정해야 합니다.

 

AWS SES에서는 이러한 MIME 형식으로 구성된 이메일 메시지를 전송하기 위해 다양한 API 및 SDK를 제공합니다.

이를 통해 개발자는 자신이 사용하는 프로그래밍 언어에 맞는 인터페이스를 통해 이메일을 보낼 수 있습니다.

 

따라서, AWS SES와 MIME은 이메일 전송에서 밀접한 관계가 있으며, MIME의 규약을 준수하는 이메일 메시지를 AWS SES에서 전송함으로써 다양한 형식의 파일을 이메일로 전송할 수 있습니다.\

 

-AWS SES를 이용해 이메일을 전송할 때 quoted printable( 이메일 본문에 특수 문자나 이메일 주소와 같은 ASCII 이외의 문자가 포함될 경우, 이메일 내용을 안전하게 전송하기 위해 필요한 인코딩 방식) 을 고려해야 하나요?

 

일반적으로 AWS SES(Simple Email Service)를 사용하여 이메일을 보낼 때, quoted-printable 인코딩은 자동으로 적용됩니다. 따라서 별도로 quoted-printable 인코딩을 고려할 필요는 없습니다. AWS SES를 사용하는 경우, 이메일을 전송할 때 필요한 인코딩 방식은 자동으로 선택되므로, 이메일의 내용이 안전하게 전송되도록 보장됩니다.

 

그러나, 이메일의 특정 부분에 대해 다른 인코딩 방식을 사용하고자 하는 경우, AWS SES는 이를 수행할 수 있는 API를 제공합니다. 이를 통해 별도의 인코딩 방식을 선택할 수 있습니다. 따라서 필요에 따라 인코딩 방식을 선택하여 이메일을 전송할 수 있습니다.

 

+ Recent posts