본문 바로가기
[AWS]/AWS 기타

[AWS] SES 메일 발송!!

by METAVERSE STORY 2022. 7. 22.
반응형
728x170

 

AWS SES의 소개와 간단한 사용법

 

SES는 Simple Email Service의 약자로 Outbound만 가능한 이메일 전송 서비스이다.
SES는 마케팅이나 혹은 웹진 메일 같은 대량의 이메일을 발송하기에 적절하며 사전 확약금 없이 발송한 이메일의 수와 데이터 전송에 대해 요금이 부과되므로 저렴한 비용으로 이용할 수 있는 장점이 있다고 한다.
(실제 서비스에 이용해본 경험은 없어서 확답은 못 하겠다.)

전송 작업의 상태를 쉽게 모니터링할 수 있으며 입증된 네트워크 인프라와 데이터 센터에서 운영되므로 가용성과 안정성이 높다.

사실 메일을 이용한 서비스를 구축하다 보면 메일의 발송 신뢰성을 신경 쓸 수밖에 없는데 서버나 네트워크 구성 혹은 IP 주소의 신뢰성 같은 인프라 문제 등 신경써야 할 부분이 많은 것은 사실이다. SES는 이런 부분에 대해서 많은 도움을 제공한다.

ISP는 자체적으로 필터링 기능을 사용하여 많은 스팸 메일들을 걸러내긴 하지만 완벽한 필터링은 가능하지 않아 회원 이메일 주소 확인용 이메일 같은 메일의 경우도 스팸으로 분류하기도 하므로 이러한 부분도 신경을 써야 한다. ISP에서 메일을 전송할지에 대해서는 이메일 발송처가 판단 기준으로 크게 작용하는데 SES 사전에 이 부분에 대해서 대응 조치를 취하므로 ISP는 SES 서비스를 거친 이메일 신뢰하게 되어 메일 도달 가능성을 높여준다. 이 부분에 대해서 SES는 몇 가지 기능을 제공하고 그 항목은 아래와 같다.

  • 컨텐츠 필터링 기능을 사용하여 바이러스나 멀웨어를 포함한 메시지를 감지하여 발신전에 차단한다.
  • ISP와 함께 수신 거부 피드백 루프를 유지한다. 이는 전송 전략을 추진하는 데 도움을 준다.
  • SPF(Sender Policy Framework) 및 DKIM(DomainKeys Identified Mail)과 같은 인증 메커니즘을 지원한다.

SES는 여러 이메일 전송 인터페이스를 제공하는데 SES 콘솔을 이용해서 메일을 발송할 수도 있고 SMTP 인터페이스나 SES Query API를 직접 호출할 수도 있다.

또한, 전송 시도, 거부 메시지, 반송, 수신 거부 등의 통계를 자동으로 수집하여 제공하여 모니터링 할 수 있으며 메일 전송을 테스트해볼 수 있는 Mailbox Simulator 기능을 제공한다.

SES를 사용하는 단계로는 도메인 혹은 이메일 주소를 인증받고, 프로덕션 엑세스를 요청하며 승인을 받고 나면 이메일을 보내고 피드백을 받을 수 있다.

본 포스트에서는 위의 단계로 이메일을 발송해 보고 콘솔과 PHP API를 이용하여 간단하게 메일을 보내는 절차를 수행해 보겠다.

 

1. SES 실행과 리전 선택

SES 실행

Application Services 내부에 SES를 누른다.

 

Region 선택

현재 SES는 전체 리전에서 사용할 수는 없고 위의 리전에서만 사용이 가능하다. 본 포스트에서는 US East (N.Virginia) 리전을 선택했다.

 

2. 이메일 주소 인증

 

Verify a New Email Address

왼쪽에 Verified Senders 아래에 Email Addresses를 클릭하고 상단에 Verify a New Email Address 버튼을 클릭한다.

 

이메일 주소 입력

주소 인증 창이 뜨면 인증할 이메일 주소를 입력한다. 입력 후 Verify This Email Address 버튼을 클릭한다.

 

인증 메일 발송 확인

인증 메일 발송 확인 창이 뜨면 Close 버튼을 클릭하여 창을 닫는다.

 

이메일 주소 목록

이메일 주소가 등록되었지만, 아직 인증이 Pending 상태이다. resend 버튼을 클릭하여 인증 메일을 재발송할 수도 있다.

등록한 이메일 주솔 인증 메일이 도착했을 것이다. https://로 시작하는 상단의 링크를 클릭한다.

 

인증완료 페이지

위와 같은 페이지를 확인했다면 아래와 같이 등록된 이메일이 Pending 상태에서 Verified 상태로 변경된 것을 확인할 수 있다.

 

Verified

 

3. 프로덕션 액세스 승인 받기

이메일 인증은 했지만, 메일을 보내기 위해서는 프로덕션 액세스 권한을 승인받아야 한다. 왼쪽에 Dashboard를 클릭한다.

 

SES Dashboard

위와 같이 Dashboard로 이동했다면 Request Production Access 버튼을 클릭한다.

 

프로덕션 액세스 권한 신청

위와 같이 요청 내용을 알맞게 채운다. *로 체크된 부분은 필수 입력 항목이며 Pre-Production Checklist는 약관에 해당되므로 모두 체크해야 한다. Use Case Description은 사용 목적을 영문으로 입력한다. 본 포스트에서는 서비스 도입을 위한 사전 테스트라고 적어 보냈다. 입력이 완료되면 하단의 Web 버튼을 클릭한다.

승인이 완료되면 아래와 같이 승인 메일을 받아볼 수 있다.

 

승인 메일

SES 소개페이지에서는 몇 분이내라고는 했지만 대략 1시간 이상은 걸리는 것 같다.

 

전송 가능량 확인

승인 메일을 받고 나면 전송 가능 메일수가 늘어나 있는 것을 확인할 수 있다. 이 수는 보내는 메일의 품질에 따라서 늘어나기도 줄기도 한다. (스팸을 계속 보낸다면 계속 줄어 카드 한도처럼 될 것이다.)

 

4. 메일을 보내기

가. 콘솔을 이용한 테스트 이메일 발송

메일은 SES 콘솔이나 CLI TOOL 혹은 SDK를 통해서 보낼 수 있는데 여기선 콘솔의 테스트 이메일 전송 기능과 SDK를 이용해 보겠다.

다시 Verified Senders 아래에 Email Addresses를 눌러 이메일 리스트로 이동한다. 인증된 이메일을 선택하고 상단의 Send a Test Email 버튼을 클릭한다.

 

테스트 메일 보내기 창

위와 같이 테스트 메일 보내기 창이 뜨면 항목을 입력한다. 역시 * 표시가 되어 있는 항목은 필수 입력 사항이다.

  • Email Format : HTML 메일을 보낼 수 있는 Formatted와 일반 텍스트를 보내는 Raw 라디오 박스
  • From : Sender 이메일 주소이며 인증된 이메일 주소이다.
  • To : 받을 이메일 주소이다.
  • Subject : 이메일 제목
  • Body : 이메일 본문

항목을 모두 채우고 나면 Send Test Email 버튼을 클릭한다.

 

도착한 이메일

 

나. SDK를 이용한 이메일 발송

PHP와 Composer가 이미 준비되어 있다고 가정을 하고 없다면 PHP는 yum으로 Composer는 이곳을 참고하여 준비한다.

?

{
   "require": {
      "aws/aws-sdk-php": "2.*"
   }
}

composer.json 파일로 저장하고 아래 명령을 이용하여 SDK를 설치한다.

# php composer.phar install

다음과 같이 PHP파일을 작성한다. 아래는 AWS의 PHP SDK의 Basic example의 형태이다.

?

<?php
require 'vendor/autoload.php';


use Aws\Ses\SesClient;


$client = SesClient::factory(array(
   'profile' => 'default',
   'region' => 'us-east-1'
));


$result = $client->sendEmail(array(
   'Source' => 'developer@wildpup.info',
   'Destination' => array(
      'ToAddresses' => array('wildpup84@gmail.com')
   ),
   'Message' => array(
      'Subject' => array('Data' => 'Hello SES!'),
      'Body' => array('Text' => array('Data' => 'Hello SES Body'))
   )
));
?>

위의 저장된 PHP를 실행하면 메일이 전송될 것이다.

Hello SES

만약 403코드를 가진 에러를 보게된다면 이곳을 참고해서 문제를 해결해 보자. 기타 다른 코드에 대해서는 이곳을 참고한다.

 

 

 

 

 

 

참조 : http://wildpup.cafe24.com/archives/1003?ckattempt=3

https://brunch.co.kr/@topasvga/570

반응형
그리드형

댓글