{"id":522,"date":"2024-04-11T05:08:20","date_gmt":"2024-04-11T05:08:20","guid":{"rendered":"https:\/\/blog.ngocha.biz\/?p=522"},"modified":"2024-04-11T05:08:20","modified_gmt":"2024-04-11T05:08:20","slug":"setup-aws-ses","status":"publish","type":"post","link":"https:\/\/blog.ngocha.biz\/?p=522","title":{"rendered":"How To Setup AWS SES: A Step-By-Step Guide"},"content":{"rendered":"<p>In this blog, I am going to <strong>setup AWS SES<\/strong> for you.<\/p>\n<p>The necessity of email notifications is very important, we all receive emails each day for various purposes, like promotion-related emails, newsletters, application updates, authentication emails, etc.<\/p>\n<p>If you are a person who is looking for this kind of requirement and also wants to send hundreds of emails each day, then you need an email service.<\/p>\n<p>In the cloud environment, <strong>AWS<\/strong> provides a service called <strong>Simple Email Service (SES)<\/strong>, which is capable of sending and receiving emails in a<strong> pay-as-you-go<\/strong> manner.<\/p>\n<p>Before we move to the setup, let&#8217;s see how the SES works.<\/p>\n<h2 id=\"aws-ses-workflow\">AWS SES Workflow<\/h2>\n<p>The following workflow explains the process of mailing from the sender to the receiver.<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-blue\">\n<div class=\"kg-callout-emoji\">\ud83d\udca1<\/div>\n<div class=\"kg-callout-text\">AWS SES setup requires a domain name (e.g., <code spellcheck=\"false\" style=\"white-space: pre-wrap;\">email.devopsproject.dev<\/code>). So the domain name need to verified by the DNS server, in our case it is <b><strong style=\"white-space: pre-wrap;\">Route53<\/strong><\/b>.<\/div>\n<\/div>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/07\/image-186.png\" class=\"kg-image\" alt=\"aws ses workflow diagram\" loading=\"lazy\" width=\"490\" height=\"668\"><\/figure>\n<p>The explanation of the AWS SES workflow starts from.<\/p>\n<ol>\n<li>An application (Sender) creates an API request to the AWS SES to send emails to users.<\/li>\n<li>Verified SES services will process the email and send it out to the Internet.<\/li>\n<li>The Internet Service Providers will pass it to various mail servers (e.g., Gmail, Yahoo, Zoho).<\/li>\n<li>Once it reaches the correct mail server of the receiver, the email will be verified as not spam, and then it will reach the inbox.<\/li>\n<\/ol>\n<p>Now, you have got understand how AWS SES works so that we can start the setup.<\/p>\n<h2 id=\"step-1-create-identity-for-ses\">Step 1: Create Identity for SES<\/h2>\n<p>You can create an SES service with your email address as the identity, but email has some limitations, so providing a valid domain name is recommended.<\/p>\n<p>In this setup, I am using a valid domain name <strong>devopsproject.dev<\/strong>, which is hosted in <strong>Route53<\/strong>.<\/p>\n<p>Open the AWS console and navigate to SES.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/untitled-1-4.png\" class=\"kg-image\" alt=\"aws ses dashboard\" loading=\"lazy\" width=\"1317\" height=\"546\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/untitled-1-4.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w1000\/2025\/03\/untitled-1-4.png 1000w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/untitled-1-4.png 1317w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>On the next window, under the <strong>configuration<\/strong> section, select the <strong>verified identities<\/strong> tab.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-144-7.png\" class=\"kg-image\" alt=\"aws ses identity creation\" loading=\"lazy\" width=\"1260\" height=\"533\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-144-7.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w1000\/2025\/03\/image-144-7.png 1000w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-144-7.png 1260w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>A new window will open, and you can see two options, which are <strong>Domain <\/strong>and <strong>Email address<\/strong>. You can choose one of the methods that suits your requirements.<\/p>\n<h2 id=\"step-2-choose-the-identity-type\">Step 2: Choose the Identity Type<\/h2>\n<p>If you are choosing <strong>Domain<\/strong>, you should provide a valid domain name. If you select <strong>Email address<\/strong>, you can provide any of your email addresses.<\/p>\n<p>For this setup, I am choosing the <strong>Domain Identity<\/strong> type.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-145-5.png\" class=\"kg-image\" alt=\"choosing aws ses identity\" loading=\"lazy\" width=\"781\" height=\"485\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-145-5.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-145-5.png 781w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>After choosing the identity type and providing the domain name <strong>devopsproject.dev<\/strong>, a few options will be available to customize the service.<\/p>\n<p>The first option you will see is <strong>Assign a default configuration set<\/strong>.<strong> sets<\/strong> are a set of rules that work with sending emails, example,<\/p>\n<ol>\n<li>You can use a <strong>dedicated IP<\/strong> address for your marketing emails, and in SES, you can create <strong>IP pools.<\/strong><\/li>\n<li>Integrate <strong>Transport Layer Security<\/strong> to make communication more secure.<\/li>\n<li>Use a subdomain to handle the redirected responses.<\/li>\n<li>You can analyze the bounce and compliance emails with the help of <a href=\"https:\/\/devopscube.com\/how-to-setup-and-push-serverapplication-logs-to-aws-cloudwatch\/\" rel=\"noreferrer\">CloudWatch<\/a>.<\/li>\n<li>You can also create a <strong>suppression list<\/strong> based on the bouncing and compliant emails.<\/li>\n<\/ol>\n<p>These are the options you will see when you create a <strong>configuration set. Y<\/strong>ou can create multiple <strong>configuration sets<\/strong> and attach them to your emails.<\/p>\n<h2 id=\"step-3-create-a-custom-mail-from-domain\">Step 3: Create a Custom Mail From Domain<\/h2>\n<p>The second option is to <strong>use a custom MAIL FROM domain<\/strong>. You can see only if you choose the <strong>Domain identity<\/strong>.<\/p>\n<p>Here, you can provide a <strong>subdomain<\/strong> to send emails.<\/p>\n<p>For example, my domain name is <strong>devopsproject.dev,<\/strong> and I want all of my sending emails<code> <\/code><strong>from address<\/strong> should be the subdomain, which is <strong>email.devopsproject.dev<\/strong>.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-146-6.png\" class=\"kg-image\" alt=\"aws ses configuration\" loading=\"lazy\" width=\"759\" height=\"752\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-146-6.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-146-6.png 759w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<h2 id=\"step-4-authentication-mechanism\">Step 4: Authentication Mechanism<\/h2>\n<p>The third one is an authentication mechanism, which is <strong>DomainKeys Identified Mails (DKIM)<\/strong>.<\/p>\n<p>This is a recommended option, and this security feature helps the sender&#8217;s mail server to verify the domain and the receiver&#8217;s<strong> <\/strong>mail server to ensure the <strong>authenticity of the mail.<\/strong><\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-147-4.png\" class=\"kg-image\" alt=\"aws ses authentication \" loading=\"lazy\" width=\"763\" height=\"551\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-147-4.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-147-4.png 763w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<h2 id=\"step-5-update-dns-records\">Step 5: Update DNS Records<\/h2>\n<p>This setup will create <strong>CNAME<\/strong>, <strong>MX<\/strong>, and <strong>TXT<\/strong> DNS records, and you can directly update them in <strong>Route 53<\/strong> if your domain is hosted in <a href=\"https:\/\/devopscube.com\/route53-private-hosted-zone\/\">Route 53<\/a>, otherwise, you have to update the DNS records to your intended DNS server manually.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-149-9.png\" class=\"kg-image\" alt=\"aws ses cname records\" loading=\"lazy\" width=\"1138\" height=\"815\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-149-9.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w1000\/2025\/03\/image-149-9.png 1000w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-149-9.png 1138w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>The DNS server will verify the records; until then, the identity will not be verified.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-148-7.png\" class=\"kg-image\" alt=\"aws ses authentication status\" loading=\"lazy\" width=\"766\" height=\"426\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-148-7.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-148-7.png 766w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>For me, it took only a few minutes to get verified, in your case it may take an hour or so, and if it is not verified, ensure your DNS records are properly stored in the DNS server.<\/p>\n<p>This is how the record is stored in <strong>Route 53.<\/strong><\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-150-3.png\" class=\"kg-image\" alt=\"route53 dns records configuration\" loading=\"lazy\" width=\"980\" height=\"808\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-150-3.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-150-3.png 980w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>Once the verification process is completed, you can see the <strong>verified<\/strong> mark on your identity status.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-154-7.png\" class=\"kg-image\" alt=\"aws ses verifcation\" loading=\"lazy\" width=\"962\" height=\"614\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-154-7.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-154-7.png 962w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>Now, you can see in the top right corner that the <strong>Send test email<\/strong> function is enabled, so you can test the email service, but one thing you have to know is that now the service is in the <strong>Sandbox<\/strong> environment.<\/p>\n<h2 id=\"step-6-sandbox-environment\">Step 6: Sandbox Environment<\/h2>\n<p>Sandbox is only used to test the email and it has email limits that only 200 emails can sent each day, also, if you want to send an email to someone, that receiver&#8217;s mail ID should be verified.<\/p>\n<p>To verify the receiver&#8217;s mail ID with AWS SES, you have to follow all the steps we have done for the domain validation, but here, instead of <strong>Domain<\/strong>, we use an <strong>email address<\/strong>.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-155-4.png\" class=\"kg-image\" alt=\"aws ses identity creation\" loading=\"lazy\" width=\"903\" height=\"545\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-155-4.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-155-4.png 903w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>The receiver will get an email with a URL, and clicking that link will verify the identity.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-156-4.png\" class=\"kg-image\" alt=\"email through aws ses\" loading=\"lazy\" width=\"897\" height=\"646\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-156-4.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-156-4.png 897w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>Once the receiver&#8217;s identity is verified, you can send test emails to that specific email address.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-157-4.png\" class=\"kg-image\" alt=\"aws ses verifed identities\" loading=\"lazy\" width=\"936\" height=\"542\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-157-4.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-157-4.png 936w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>Our configurations and the testing process are completed, now is the time to get out of the Sandbox environment.<\/p>\n<h2 id=\"step-7-get-over-from-sandbox-environment\">Step 7: Get Over From Sandbox Environment<\/h2>\n<p>In the <strong>account dashboard,<\/strong> we can see the <a href=\"https:\/\/devopscube.com\/amazon-ses-production-access\/\" rel=\"noreferrer noopener\"><strong>request production access<\/strong><\/a> tab. Click that will navigate to another page, where you have to send a request with valid information.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-160-5.png\" class=\"kg-image\" alt=\"aws ses sandbox environment\" loading=\"lazy\" width=\"1582\" height=\"715\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-160-5.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w1000\/2025\/03\/image-160-5.png 1000w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-160-5.png 1582w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>The request will take almost one day to process, after that, your limitations will be removed.<\/p>\n<p>Then you can see the dashboard like this, and from now on, we won&#8217;t have to verify the receiver&#8217;s email IDs to send emails.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-159-6.png\" class=\"kg-image\" alt=\"aws ses dashboard\" loading=\"lazy\" width=\"967\" height=\"394\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-159-6.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-159-6.png 967w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<h2 id=\"step-8-send-emails-through-aws-ses\">Step 8: Send Emails through AWS SES<\/h2>\n<p>Navigate to the <strong>Configuration<\/strong> section and open the <strong>verified identities<\/strong>. Then click to open the domain <strong>devopsproject.dev<\/strong>.<\/p>\n<p>Click the <strong>send test email<\/strong> tab, and a new page will open. Here you can compose your emails.<\/p>\n<p>SES provides two Email formats, one is <strong>Formatted<\/strong> and the other one is <strong>Raw<\/strong>.<\/p>\n<p>If you want to create a custom Email format, then choosing <strong>RAW<\/strong> would satisfy your preference, the <strong>Multipurpose Internet Mail Extention Standard (MIME)<\/strong> helps you create the emails.<\/p>\n<p>I am doing this for testing purposes, so I am choosing a <strong>Formatted<\/strong> format to send a mail.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-161-4.png\" class=\"kg-image\" alt=\"aws ses send test emails\" loading=\"lazy\" width=\"912\" height=\"440\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-161-4.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-161-4.png 912w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>In the next step, you have to provide the <strong>from-address<\/strong>, I am giving the subdomain prefix, which is <strong>email<\/strong>.<\/p>\n<p>Instead of email, you can give other prefixes like bounce, support, etc, based on your email.<\/p>\n<p>In the <strong>scenario <\/strong>section, you can choose a predefined one, like <strong>successful delivery or automatic response<\/strong>, or you can choose a custom one.<\/p>\n<p>Then the remaining things are the subject and body part, and if you already created a configurations set, you can choose that too, but that is optional.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-163-5.png\" class=\"kg-image\" alt=\"aws ses send email\" loading=\"lazy\" width=\"877\" height=\"790\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-163-5.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-163-5.png 877w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>Once you send the mail, you will get the output like this.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-164-2.png\" class=\"kg-image\" alt=\"email on gmail through aws ses\" loading=\"lazy\" width=\"826\" height=\"435\" srcset=\"https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/size\/w600\/2025\/03\/image-164-2.png 600w, https:\/\/storage.ghost.io\/c\/5f\/2f\/5f2f4d20-2abf-4534-8d40-7aa233aedd43\/content\/images\/2025\/03\/image-164-2.png 826w\" sizes=\"auto, (min-width: 720px) 720px\"><\/figure>\n<p>One more thing I want to include in this is that we know we can create a configuration set, which rules, we can attach with the sending emails, same as we can create rules for incoming emails that you can see in the Email Receiving tab.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>This is just a base setup of the AWS SES, there are a lot of options available, explore them and include them when you implement them in real situations.<\/p>\n<p>Understanding more about the <strong>configuration set<\/strong> and the <strong>Email-receiving<\/strong> options will give you more customization features.<\/p>\n<p>Also, your <strong>Email templates<\/strong> can be stored in SES and a <strong>suppression list<\/strong> helps to add emails for bounce and complaints.<\/p>\n<p>Amazon SES pricing will be calculated based on criteria such as the number of incoming and outgoing messages, dedicated IP, size of the emails, etc.<\/p>\n<p>To know about the pricing, please visit the <a href=\"https:\/\/aws.amazon.com\/ses\/pricing\/?ref=devopscube.com\">official documentation<\/a>.<\/p>\n<hr>\n<p><strong>Ngu\u1ed3n:<\/strong> <a href=\"https:\/\/devopscube.com\/setup-aws-ses\/\" target=\"_blank\" rel=\"noopener noreferrer\">How To Setup AWS SES: A Step-By-Step Guide \u2014 DevOpsCube<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Source: https:\/\/devopscube.com\/setup-aws-ses\/<\/p>\n","protected":false},"author":1,"featured_media":523,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-522","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/posts\/522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=522"}],"version-history":[{"count":0,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/posts\/522\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=\/wp\/v2\/media\/523"}],"wp:attachment":[{"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ngocha.biz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}