a
Share
aws logo partner

AWS SES

Adding emails to an automated workflow for automated processing can be a difficult task. To connect to mail servers and poll for new emails, apps have traditionally used the POP protocol. Once the emails arrive, the application processes them inline and takes action. POP is an inefficient and error-prone approach, this can lead to workflows missing messages. There are drawbacks to using this strategy because it requires polling and adds inefficiencies in design.

Introduction

The process of putting emails to a pipeline for automated processing involves a significant amount of manual labor. To check for new messages, apps have traditionally used the POP protocol. Inline processing and immediate action are both performed as soon as emails arrive to the software. This method is inefficient and prone to errors, therefore mistakes can happen. Due to the necessity of polling and the introduction of inefficiencies into the design process, this method has its drawbacks. It is a cost-effective, scalable, and customisable email service that can execute spam filters and virus scans, among other things, through Amazon SES. A real-time email processing service, Amazon SES, can be employed to connect with an application.

For the purposes of this blog, we’ll focus on the automation of CRM platforms and the processing of emails associated with customer interactions or direct email requests (also known as order processing). For instance, a customer interaction email can be copied to Salesforce (or another database) before being linked to the relevant client account or opportunity. In most cases, a developer would have to call the mailbox, authenticate, and then pull messages into an object in the programme using a mail library (such as JavaMail if the application is created in Java.). All components of this approach are included, including polling the mailbox every 10 to 15 minutes for new messages and addressing problems when the mailbox is not available. Without constantly checking the mailbox, this strategy can be used to automate email processing. It will be implemented in a serverless architecture for the entire solution to be built.

Solution

 

As demonstrated in this blog article, email processing within an application workflow may be automated using SES. Emails received in SES can be saved and processed in S3 by activating an AWS Lambda function, rather than waiting for the message to arrive in an email client like Gmail. Sample application accepts orders via email, which are then processed and stored automatically in DynamoDB. The diagram below depicts the high-level architecture

A serverless application accepts emails from Amazon SES and distributes them to a bucket in Amazon S3. To figure out what language the app’s message body uses, Amazon Comprehend is employed. Amazon DynamoDB is then used to get the email address of a support organization that specializes in this field. We must use Amazon Simple Email Service in order to get the email to the intended recipient (SES). For purposes such as subsequent processing or auditing, Amazon S3 can be utilized to store incoming email messages.

Consumers initiate an event by emailing a generic support address like [email protected] to request assistance. Amazon SES is able to receive this email because of a recipient rule. According to the rule, messages are written to an Amazon S3 bucket with a specific prefix.

An item creation event triggers a Lambda function in this bucket using S3 Events. After reading the email object, analyzing the text, and sending it to Amazon Comprehend for language detection, the Lambda function returns a result. A table containing mappings between language codes and support group emails for the languages in which they were identified is pulled from Amazon DynamoDB and used to accomplish this. Sometimes, one support group responds to emails in English, while another responds to emails in French. The Lambda function determines and sends the same email address to several recipients via a resend operation, which is the function’s duty (email forwarding). Lookup fails to return any results for the destination address or the language cannot be established. Alternatively, the email is forwarded to a catch-all email address that was set up during the application’s installation.

Free AWS Services Template

Download list of all AWS Services PDF

Download our free PDF list of all AWS services. In this list, you will get all of the AWS services in a PDF file that contains  descriptions and links on how to get started.

Prerequisites

For Amazon SES to work, you must first make sure that you have full control over your email domain. The documentation provides detailed instructions on how to use the Amazon SES dashboard to validate your domain. It is possible to register a domain name with Route 53 if you do not have one.

Step 1: Make use of Amazon’s S3 service to store your emails.

As a first step, create an S3 bucket for storing all incoming emails so that the lambda may process them all at once. For SES to be able to add objects to the bucket, a policy must be attached to it.

The preceding policy illustration should have the following alterations made to it:

  • The name of the bucket you want to write to should be substituted for myBucket when using Amazon S3.
  • Replace 111122223333 with your AWS account number.

Step 2: To create a table in DynamoDB to mimic an application.

Next, build a table in DynamoDB using the following parameters: A DynamoDB table is used to store order information. In this example, the partition key for a table will be an email address. Consider the following data model as an illustration.

Step 3: When SES activates a Lambda Function, it is utilized to handle email messages.

In the following code example, we’ll create the Lambda function to process the email and write its contents to a DynamoDB table. This function requires an execution role that has access to S3, DynamoDB, and a CloudWatch log group in order to run. Lambda can only be called if SES has a Resource-based Policy. Now that you’ve read this tutorial, you should know exactly how to utilize SES to run a lambda function and get all the rights you need to do it. These kinds of policy declarations are rather common:

One way to automate the sending of event records to Lambda is through the use of Amazon Simple Email Service (SES). This event contains information about the email headers for the arriving message, but it does not include information about the results of Amazon SES checks on incoming messages (spam and virus screening). In addition, it does not include any information on the content of the message that was received. Therefore, the email body must be processed by the lambda function once it has been placed in S3. Find out more about it right here. For the purpose of demonstrating the example app’s capabilities, we’ll assume that the subject and body of each message contain information that’s sent to the DynamoDB table, including the item name and its quantity.

Step 4: A Lambda function can be created and run in response to SES emails that are delivered to S3. Function

Once Amazon SES is installed, the process is complete (Simple Email Service). Email can only be sent and received once the domain name has been validated by SES. In order to send and receive emails from domain-related addresses, you must prove that you are the legitimate owner of the domain and have the ability to do so before you can proceed. Please take these procedures to ensure that your domain name is genuine:

  • The SES console’s navigation pane has a section devoted to identity management, where domains can be discovered.
  • The drop-down box will have the option to verify a brand new domain.
  • Enter the domain name you want to verify in the Verify new Domain dialogue box.

From the selection that drops down, choose the option to Verify This Domain.

  • In the dialogue box, there will be an entry for the Domain verification record set displayed. In order for the domain DNS server to operate correctly, you will need to upload this record to the server. In addition to this, the settings of the DNS server for your domain needs to be updated to include an MX Record for email reception.
  • Your DNS server can be updated from the SES panel if it’s registered under the same account as your SES one, and that account is Route53, by default.

It can now be used to send and receive emails once the domain has been validated, as the status changes from “waiting verification” to “verified”.

For those who will be receiving the information, create a rule set. To control how SES handles emails from domains that you own, you can use the Rule Set. You have the option of defining rules for specific addresses or for all addresses in a domain, depending on your preferences. Following these steps will help you build the rule set:

  • Rule Sets are located in the left navigation pane under the Email Receiving section.
  • Select a rule from the drop-down menu to create it.
  • The recipient’s email address must be entered in order to configure the rule. You can set it up for any address in the domain using simply the domain name as a wildcard, or you can add up to 100 recipient addresses.

You’ll now need to enter your rules actions after you’ve provided your addresses. These two activities should be included as well:

The first one is an S3 bucket, and it’s used to store a copy of the email in there. Select the bucket name from the drop-down list that you generated in step one.

  1. A prefix is an alternative method for categorizing the output of several rules.
  2. It is possible to process an email using the Lambda kind of method. In step one, we generated a lambda that we can now use.
  3. After configuring the SES Rule, we will be able to run the entire workflow. Lambda is now able to handle any emails that are sent to the [email protected] email address. In this approach, email processing may be integrated into the workflow of your programme without the need to poll it for updates.

Need help on AWS?

AWS Partners, such as AllCode, are trusted and recommended by Amazon Web Services to help you deliver with confidence. AllCode employs the same mission-critical best practices and services that power Amazon’s monstrous ecommerce platform.

Conclusion

A key point of this piece was that email processing can be integrated into a workflow without polling a mailbox.

Using Amazon Simple Email Service (SES) to receive emails allows you to build a serverless architecture. In this way, emails can be processed and screened for spam or viruses, after which the output can be delivered to a downstream system or saved in a database for application purposes.

Free AWS Services Template

Text AWS to (415) 890-6431

Text us and join the 700+ developers that have chosen to opt-in to receive the latest AWS insights directly to their phone. Don’t worry, we’ll only text you 1-2 times a month and won’t send you any promotional campaigns - just great content!

Related Articles

Top Software as a Service Companies in 2024

Top Software as a Service Companies in 2024

Spending for public cloud usage continues to climb with every year. In 2023, nearly $600 billion was spent world-wide with a third of that being taken up by SaaS. By comparison, Infrastructure as a Service only takes up $150 billion and Platform as a Service makes up $139 billion. On average, companies use roughly 315 individual SaaS applications for their operations and are gradually increasing on a yearly basis. SaaS offers a level of cost efficiency that makes it an appealing option for consuming software.

AWS Graviton and Arm-architecture Processors

AWS Graviton and Arm-architecture Processors

AWS launched its new batch of Arm-based processors in 2018 with AWS Graviton. It is a series of server processors designed for Amazon EC2 virtual machines. The EC2 AI instances support web servers, caching fleets, distributed data centers, and containerized microservices. Arm architecture is gradually being rolled out to handle enterprise-grade utilities at scale. Graviton instances are popular for handling intense workloads in the cloud.

What is Tiered Pricing for Software as a Service?

What is Tiered Pricing for Software as a Service?

Tiered Pricing is a method used by many companies with subscription models. SaaS companies typically offer tiered pricing plans with different services and benefits at each price point with typically increasing benefits the more a customer pays. Striking a balance between what good rates are and the price can be difficult at times.