AWS SES Spring Bootでのテンプレートの使用


AWS SESとは?


Amazon Simple Email Service
Amazon Simple Email Service (SES) is a cloud-based email service that provides cost-effective, flexible and scalable way for businesses of all sizes to keep in contact with their customers through email.
AWSが提供するクラウドベースの電子メール送受信サービス.
最近のプロジェクトでは、初めて使いましたが、使い方をまとめてみましょう.
あらかじめ準備する
  • awsアカウント(Prettyer対応)
  • STEP 1:AWSアカウントの制限解除


    初めてSESサービスを使用しようとすると、Sandbox状態ではサービスを使用できません.AWS側に要請する必要があります.

    1.AWSサポートセンター接続の選択>ケースの作成



    2.サービス制限を追加してLimit type>SESを選択




    その後、あなたの要求(砂箱を閉じる)を記入することができますが、できるだけ原因を詳しく説明する必要があります.私は個人的な勉強のために書いたが、後で2回返されて書いた.
    必要に応じて、砂箱をキャンセルすると同時に、基本出荷量制限(毎日200バレル)をキャンセルするように要求してください.
    Step 2から、制限解除後に続きます.

    STEP 2:ドメイン認証取得


    1.AWS SES>Verified Identityへの接続




    2.独自のEメールアカウントを使用してドメインを作成します。




    独自のドメインがある場合は、それを使用できます.

    STEP 3:アクセスキー取得


    1.プロファイル>セキュリティ認証情報>アクセスキー




    ここで新しいアクセスキーを作成できます.
    最初の作成時にアクセスキーと秘密鍵が発行されますが、受信時にのみ表示されるため、単独で保存することが望ましいです.
    AWSもそれを強調していますが、アクセスキーを共有することは絶対にできません!

    STEP 4:依存性と構成設定の追加


    スプリングにSES設定を追加しましょう
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-ses</artifactId>
      <version>1.12.144</version>
    </dependency>
    pom.xml
    aws.ses.access-key=액세스 키
    aws.ses.secret-key=시크릿 키
    applicant.properties
    @Configuration
    public class AwsSesConfig {
    
        @Value("${aws.ses.access-key}")
        private String accessKey;
    
        @Value("${aws.ses.secret-key}")
        private String secretKey;
    
        @Bean
        public AmazonSimpleEmailService amazonSimpleEmailService() {
            final BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(accessKey, secretKey);
            final AWSStaticCredentialsProvider awsStaticCredentialsProvider = new AWSStaticCredentialsProvider(
                    basicAWSCredentials);
    
            return AmazonSimpleEmailServiceClientBuilder.standard()
                    .withCredentials(awsStaticCredentialsProvider)
                    .withRegion("설정한 지역")
                    .build();
        }
    }

    STEP 5:SpringでSES+データムテンプレートを使用する


    1.電子メールテンプレートhtmlの作成

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta CHARSET="UTF-8">
    </head>
    <body>
    <div class="container-fluid">
        <h2 class="header">이메일 인증</h2>
        <hr>
        <div>
            <br> 회원가입 진행을 위한 인증번호를 보내드립니다.
            <br> 아래 보이는 인증번호를 화면에 입력해 주세요
            <br> 감사합니다.
        </div>
        <div style="">
            {{number}}
        </div>
    </div>
    
    括弧で2回囲む部分は変数を含む部分です.
    スタイルはhead部分に置くことができますが、NAVERでは適用されないのでラベルに書きました.

    2.AWSで作成したテンプレートオブジェクトを送信


    通常amazon SimpleEmailServiceオブジェクトのsendEmailメソッドを使用しますが、カスタムhtmlファイルを使用して送信されるためsendTemplatedEmailメソッドを使用します.
    @Autowired
    private AmazonSimpleEmailService amazonSimpleEmailService;
    
    ...
    Template template = new Template();
    template.setTemplateName("number"); // 템플릿 이름
    template.setSubjectPart("인증번호 입니다."); // 메일 제목
    template.setHtmlPart(content); // 작성한 html(String 형식으로)
    template.setTextPart(null); // html이 지원 안될때 형식
    
     CreateTemplateRequest request = new CreateTemplateRequest().withTemplate(template);
     amazonSimpleEmailService.createTemplate(request);
    最後のcreateTemplate関数を実行すると、SES Eメールテンプレートが追加したEメールテンプレートを生成します.

    3.SendTemplatedEmailRequestオブジェクトの作成


    今から正式にメールを送りましょう.
    List<String> receivers = new ArrayList<>();
    receivers.add(email);
    
    Destination des = new Destination();
    des.setToAddresses(receivers);
    
    Map<String, String> data = new HashMap<>();
    data.put("number", "인증번호");
    String templateData = new Gson().toJson(data);
    
    SendTemplatedEmailRequest emailRequest = new SendTemplatedEmailRequest();
    emailRequest.setTemplate("authNo");
    emailRequest.setDestination(des);
    emailRequest.setSource("ses에 등록한 송신자 이메일");
    emailRequest.setTemplateData(templateData);
    
    amazonSimpleEmailService.sendTemplatedEmail(emailRequest);

    結果



    👍