AWS SES

SES란?
SES란 Simple Email Service의 약자이며, 고도로 확장 가능하고 비용 효율적인 이메일 송수신용 서비스입니다.
이메일 솔루션을 구축하거나 타사 이메일 서비스를 라이선싱, 설치 및 운영하는 데 따르는 복잡성과 비용을 없애줍니다.

SNS와 SES
한국이나, 도쿄리전에 없던 터라 생소하신 분들도 계실 것 이라고 생각되는데요
SNS로도 메일은 보낼 수 있는데 뭐가 달라? 하시는 분들도 계실것 같아서 간단하게 설명해보겠습니다.

SNS(Simple Notifications Service)
여러 프로토콜(Ex. HTTP, 이메일, SQS, SMS)을 통해 Topic의 Subscribers에게 통지합니다.
일반적으로 SNS는 다른 AWS 서비스를 통해 실행되는 텍스트 기반 이메일 발송에 사용됩니다. (Ex. 요금 청구 알람 설정)
많은 서비스가 통지 하기위해 SNS를 사용하기 때문에, 대부분의 시험에서는 SNS에 대해 질문하는 경향이 강합니다.
SNS에 관해 Topic이라든지, Subscriptions에 대해 알 필요가 있습니다.

SES(Simple Email Service)
SES는 클라우드 기반 이메일 서비스입니다. (Ex. SendGrid, Mailgun)
HTML 형식의 이메일을 보낼 수 있습니다. (SNS는 불가능)
이메일 템플릿을 작성해놓고 사용할 수 있습니다.
커스텀 도메인 네임을 사용하여 메일을 전송할 수 있습니다.
인바운드 메일을 수신할 수 있습니다.
이메일의 송신을 감시할 수 있습니다.

[pom.xml]

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

[AmazonSESSample.java]

package com.amazonaws.samples;

import java.io.IOException;

import com.amazonaws.regions.Regions;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder;
import com.amazonaws.services.simpleemail.model.Body;
import com.amazonaws.services.simpleemail.model.Content;
import com.amazonaws.services.simpleemail.model.Destination;
import com.amazonaws.services.simpleemail.model.Message;
import com.amazonaws.services.simpleemail.model.SendEmailRequest; 

public class AmazonSESSample {

  // Replace [email protected] with your "From" address.
  // This address must be verified with Amazon SES.
  static final String FROM = "[email protected]";

  // Replace [email protected] with a "To" address. If your account
  // is still in the sandbox, this address must be verified.
  static final String TO = "[email protected]";

  // The configuration set to use for this email. If you do not want to use a
  // configuration set, comment the following variable and the 
  // .withConfigurationSetName(CONFIGSET); argument below.
  static final String CONFIGSET = "ConfigSet";

  // The subject line for the email.
  static final String SUBJECT = "Amazon SES test (AWS SDK for Java)";
  
  // The HTML body for the email.
  static final String HTMLBODY = "<h1>Amazon SES test (AWS SDK for Java)</h1>"
      + "<p>This email was sent with <a href='https://aws.amazon.com/ses/'>"
      + "Amazon SES</a> using the <a href='https://aws.amazon.com/sdk-for-java/'>" 
      + "AWS SDK for Java</a>";

  // The email body for recipients with non-HTML email clients.
  static final String TEXTBODY = "This email was sent through Amazon SES "
      + "using the AWS SDK for Java.";

  public static void main(String[] args) throws IOException {

    try {
      AmazonSimpleEmailService client = 
          AmazonSimpleEmailServiceClientBuilder.standard()
          // Replace US_WEST_2 with the AWS Region you're using for
          // Amazon SES.
            .withRegion(Regions.US_WEST_2).build();
      SendEmailRequest request = new SendEmailRequest()
          .withDestination(
              new Destination().withToAddresses(TO))
          .withMessage(new Message()
              .withBody(new Body()
                  .withHtml(new Content()
                      .withCharset("UTF-8").withData(HTMLBODY))
                  .withText(new Content()
                      .withCharset("UTF-8").withData(TEXTBODY)))
              .withSubject(new Content()
                  .withCharset("UTF-8").withData(SUBJECT)))
          .withSource(FROM)
          // Comment or remove the next line if you are not using a
          // configuration set
          .withConfigurationSetName(CONFIGSET);
      client.sendEmail(request);
      System.out.println("Email sent!");
    } catch (Exception ex) {
      System.out.println("The email was not sent. Error message: " 
          + ex.getMessage());
    }
  }
}

좋은 웹페이지 즐겨찾기