Aws

Amazon Simple Email Service (SES)의 메일송수신 설정방법

지오준 2021. 12. 8.
반응형

Amazon Simple Email Service (SES)설정순서

1.Amazon SES 클릭해서 설정화면으로 이동

2.Email Address 설정

①SES Home의 Identity Management서브메뉴에서 Emaiil Address를 클릭합니다.

Verify a New Email Address버튼을 클릭해서 신규 이메일 등록화면으로 이동합니다.

등록할 이메일을 입력후에 Verify Thie Email Address버튼을 클릭합니다.
Amazon SES에서 등록한 메일주소로 확인용 메일이 발송됩니다.

④등록환 메일로 발송된 확인용 메일의 링크를 클릭해서 SES의 메일등록을 확정합니다.

Amazon SES Home으로 돌아가서 Email Address서브화면을 갱신하면 등록한 메일주소의 Status가 verified는 변경되어 있는것이 확인되면 등록이 완료됩니다.

3.SES이용해서 메일송신 테스트

Amazon SES에서는 3가지(Amazon SES Home의 Send a Test Email, Simple Mail Transfer Protocol (SMTP), API) 방법으로 메일송신이 가능합니다.

 

①Amazon SES Home의 Send a Test Email의 메일송신 방법

Amazon SES Home의 Email Address서브화면에서、등록한 메일주소를 선택하고 Send a Test Email버튼을 클릭합니다.

Send Test Email 다이얼로그화면에서 아래와같이 입력후

Send Test Email버튼을 클릭해서 메일을 송신합니다.

등록한 이메일주소에 아래와 같은 메일이 확인되면 완료됩니다.

Simple Mail Transfer Protocol (SMTP)의 메일송신 방법

아래의 C#용 샘플코도를 이용해서 메일발송가능한 프로그램을 작성합니다.

※.NET Framework버젼 4.5이상이 필수조건입니다.

using System;
using System.Net;
using System.Net.Mail;

namespace AmazonSESSample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 메일의 보내는사람의 주소와 이름
            String FROM = "sender@example.com";
            String FROMNAME = "Sender Name";

            // 메일의 받는사람 주소
            String TO = "recipient@amazon.com";

            // Amazon SES SMTP 유저명
            String SMTP_USERNAME = "smtp_username";

            // Amazon SES SMTP 패스워드
            String SMTP_PASSWORD = "smtp_password";

            // Amazon SES Region 
            String HOST = "email-smtp.us-west-2.amazonaws.com";

            // 포트번호
            int PORT = 587;

            // 메일타이틀
            String SUBJECT =
                "Amazon SES test (SMTP interface accessed using C#)";

            // 메일본문
            String BODY =
                "<h1>Amazon SES Test</h1>" +
                "<p>This email was sent through the " +
                "<a href='https://aws.amazon.com/ses'>Amazon SES</a> SMTP interface " +
                "using the .NET System.Net.Mail library.</p>";

            // MailMessage설정
            MailMessage message = new MailMessage();
            message.IsBodyHtml = true;
            message.From = new MailAddress(FROM, FROMNAME);
            message.To.Add(new MailAddress(TO));
            message.Subject = SUBJECT;
            message.Body = BODY;

            // SMTP에서 메일송신
            using (var client = new System.Net.Mail.SmtpClient(HOST, PORT))
            {
                // SMTP인증설정
                client.Credentials =
                    new NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD);

                // SSL사용
                client.EnableSsl = true;

                // 메일송신실행
                try
                {
                    Console.WriteLine("Attempting to send email...");
                    client.Send(message);
                    Console.WriteLine("Email sent!");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("The email was not sent.");
                    Console.WriteLine("Error message: " + ex.Message);
                }
            }
        }
    }
}

API의 메일송신 방법

아래의 C#용 샘플코도를 이용해서 메일발송가능한 프로그램을 작성합니다.
※.NET Framework버전 4.6.1이상이 필수조건입니다.
※NuGet의 AWSSDK.Core 패키지(버전 3.3.19)설치가 필요합니다.
※NuGet AWSSDK.SimpleEmail 패키지(버전 3.3.6.1)설치가 필요합니다.

using Amazon;
using System;
using System.Collections.Generic;
using Amazon.SimpleEmail;
using Amazon.SimpleEmail.Model;

namespace AmazonSESSample 
{
    class Program
    {
        // 메일의 보내는사람 주소
        static readonly string senderAddress = "sender@example.com";

        // 메일의 받는사람 주소
        static readonly string receiverAddress = "recipient@example.com";

        // 메일의 타이틀
        static readonly string subject = "Amazon SES test (AWS SDK for .NET)";

        // 메일의 본문
        static readonly string textBody = "Amazon SES Test (.NET)\r\n" 
                                        + "This email was sent through Amazon SES "
                                        + "using the AWS SDK for .NET.";
        
        // 메일의HTML설정
        static readonly string htmlBody = @"<html>
<head></head>
<body>
  <h1>Amazon SES Test (AWS SDK for .NET)</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-net/'>
      AWS SDK for .NET</a>.</p>
</body>
</html>";

        static void Main(string[] args)
        {
            // Amazon Simple Email Service (SES)API의 메일송신 실행
            using (var client = new AmazonSimpleEmailServiceClient(RegionEndpoint.USWest2))
            {
                var sendRequest = new SendEmailRequest
                {
                    Source = senderAddress,
                    Destination = new Destination
                    {
                        ToAddresses =
                        new List<string> { receiverAddress }
                    },
                    Message = new Message
                    {
                        Subject = new Content(subject),
                        Body = new Body
                        {
                            Html = new Content
                            {
                                Charset = "UTF-8",
                                Data = htmlBody
                            },
                            Text = new Content
                            {
                                Charset = "UTF-8",
                                Data = textBody
                            }
                        }
                    },
                };
                try
                {
                    Console.WriteLine("Sending email using Amazon SES...");
                    var response = client.SendEmail(sendRequest);
                    Console.WriteLine("The email was sent successfully.");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("The email was not sent.");
                    Console.WriteLine("Error message: " + ex.Message);
                }
            }

            Console.Write("Press any key to continue...");
            Console.ReadKey();
        }
    }
}
반응형

댓글