I am trying to figure out, once we send an email to X number of recipients through Amazon SES, how are we supposed to receive a bounce message (through Amazon SNS or any other tool) if we do not want them to be emailed to another account?
Using the nested labyrinth of Amazon's documentation, I found out one can have your bounces emailed to a specific account. But let us not take that path! The alternative is Configuring Amazon SNS Notifications for Amazon SES.
Here, Amazon offers two options:
Configuring Notifications Using the Amazon SES Console
Configuring Notifications Using the Amazon SES API
In the latter approach, Amazon introduces three API methods to deal with and writes
You can use these API actions to write a customized front-end
application for notifications.
Does "a customized front-end application for notifications" means setting up a Web server to listen for Bounce and Complaint JSON messages from Amazon?
No, you don't need a webserver to process the bounces, but you do need something to process them.
You tell SES which SNS topic to send the bounces too, and then you can subscribe to that SNS topic with a variety of endpoints of your choosing, getting an email is just one of them.
I find it best to let SES Notify SNS, and then have SNS deliver that message to an SQS queue, and I have a services that polls that queue and processes the bounces against my database.
AWS gives you the tools to be notified about bounces, but you still need to do the work of processing the bounce notifications.
The documentation is fairly clear. SES bounce notifications go to an SNS topic. Once you understand that you just need to look at the SNS documentation to see what methods are available to subscribe to an SNS topic. Currently the following methods of receiving SNS messages are available
Lambda
SQS
HTTP/S
Email
SMS
So you can have a Lambda function that gets called once for every bounce message. You can have bounce messages added to an SQS queue. You can have an HTTP/S endpoint in your application that bounce messages will get posted to. You can have bounce messages emailed to you. You can have bounce messages sent to your phone as SMS messages.
Related
Currently our server connects to the Amazon SES SMTP interface to send out email reminders to clients, emails that are undelivered and bounce back are forwarded onwards using the SNS service.
All this works perfectly.
There has never been the capability to store the email reminders that get sent out as the server simply fires and forgets.
I would like to add this capability using the AWS architecture to capture and store the emails.
I think this possible using some combination of SES and SQS and S3 but has anyone got any suggestions on how to architect this requirement within AWS to achieve the goal? I am unsure of the best approach and I'm concerned that I might be missing some component of AWS that could easily achieve this.
I found the solution hidden in the identity management section of AWS, it is here that you set up the process of forwarding email notifications.
Location of notifications
Step 1 Click on the domain to edit the notifications and create a new SNS (Push Notification Serviceā) topic for each type of notification (Bounce, Complaint or Delivery)
Step 2 Create a new Queue (SQS)
Step 3 Go to SNS and create a new subscription to link the queue and the notification together
Step 4 Use Lamdba to process your queue and direct the output to wherever you wish
Note If you are sending large quantities of email then this solution may cost considerably more and you should research different solutions including using Cloudwatch and Kinesis
Background: I was handed the reins for our company's AWS account to implement a process to make sure our SES delivery report notifications can get acted on instead of just being filed away or deleted.
That said, the first hurdle is that the email address associated with our company's helpdesk keeps receiving all Amazon SES notifications for bounces, complaints and delivery failures. This creates a mess for our support staff in having to wade through these emails individually, and our ticketing system doesn't have the capability of auto-forwarding emails even though I can categorize them based on rules when they arrive.
I have read through all the knowledge base articles for SES notifications as well as ~380 forum topics relating to email notifications, but I didn't see an answer posted this question even though it had been asked a handful of times.
What we've done:
Set up a dedicated email inbox for these requests so we can then process them correctly (that we want to divert these messages to).
Created an SNS topic with the new email address as its endpoint and applied it to all categories, but the emails still kept going to support, so that clearly wasn't the solution.
Removed all hard-coded references to these emails from our software code, but we still get individual Amazon SES notifications to the helpdesk (~30 a day).
Simple idea, but AWS is pretty intimidating especially for our small company where no one has taken the time to learn through the ins and outs after first setting it up (fire and forget).
Edit for clarity, the emails I'm trying to redirect are "Delivery Status Notification (Failure/Delay)" and "Undeliverable:..."
Here's how i got this to work:
Under "AWS SNS"
Create an SNS Topic
Create a subscription to the topic that sends an email to your desired "catch address"
Confirm this subscription by clicking the link sent by AWS to this address
Under "SES Management - Identity Mangement"
Verify a domain or email address
At the domain/email address go to Notification and DISABLE Email Feedback Forwarding
Same place select your SNS topic for Bounces and Complaints
Under "SES Managment - Email Receiving"
Create a Rule set and then create a rule with the domain or email address above
Make the action the SNS rule above
When sending mail be sure that the From address is using the domain/email address above. All bounces and complaints should now end up in the catch address inbox. ALL OF THIS must be setup in the same region.
These notifications are configured either at a verified Domain level or at a verified email address level. This page has info on it. At the bottom, it talks about how you can confirgue to have messages sent to email or a SNS topic. You probably have a notification setup on your domain or the specific email address you are using.
You'll find all this in the SES section of the AWS Console under the Identity Management section. Make sure you check both the Domains area and the Email Addresses area.
You make the feedback address differ from the sender by setting the Return-Path header in your message (subject to a few other rules):
From the developer guide:
If you used the SMTP interface to send the message, then notifications go to the address specified in the MAIL FROM command.
If you used the SendEmail API operation to send the message, then the notifications are delivered according to the following rules:
If you specified the optional ReturnPath parameter in your call to the SendEmail API, then notifications go to that address.
Otherwise, notifications go to the address specified in the required Source parameter of SendEmail.
If you used the SendRawEmail API operation to send the message, then the notifications are delivered according to the following rules:
If you specified a Source parameter in your call to the SendRawEmail API, then notifications go to that address. This is true even if you specified a Return-Path header in the body of the email.
Otherwise, if you specified a Return-Path header in the raw message, then notifications go to that address.
Otherwise, notifications go to the address in the From header of the raw message.
I want to do a Task Scheduler that sends notifications via email at a specific time, for example: every day at 12:00.
I found some solutions that requires code to achieve it, such as: Lambda, Poweshell, cron jobs, etc. But all those solutions are too complicated.
Is there any other way achieving this?
I found SES, SNS, SQS but couldn't find how to set a specific time to send the notification/emails.
Can you help me find the simplest tool for that (prefer without any code needed)?
Thanks in advance.
There's probably 2 questions in your message but honestly lambda will not be too complicated to setup.
1) Send email from Amazon platform:
you mention SNS, SES and SQS so lets look:
SNS : Amazon Simple Notification Service
Send mobile notifications, emails and/or SMS messages. In your case (email) as its notification based you need the subscriber to specify email as the protocol of receiving notification. Probably not what you're looking for
SES : Amazon Simple Email Service
With Amazon SES, you can send transactional email, marketing messages, or any other type of high-quality content to your customers. Probably what you're looking for
SQS : Amazon Simple Queue Service
Store data for future processing in a queue. The lingo for this is storing "messages" but it doesn't have anything to do with email or SMS. SQS doesn't have any logic, it's just a place to put things and take things out. (from https://www.expeditedssl.com/aws-in-plain-english).
Look at his Q&A with the question and answer you'll have a fully setup lambda to send email from AWS lambda using SES
2) Schedule the lambda to run at specific time
Back in october 2015 Amazon introduced Scheduled Functions (Cron) so
You can now invoke a Lambda function on a regular, scheduled basis.
You can specify a fixed rate (number of minutes, hours, or days
between invocations) or you can specify a Cron-like expression:
I am trying since a last few weeks to setup an email, for example,info#domainname.com, in aws Amazon SES
I tried some of the links:
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-email.html
I even went through a similar question marked closed on Stack Overflow:
How to set up Amazon SES to send and receive emails
But couldn't finish the setup correctly. Would anyone please help me to finish this task?
For your reference, I am using Free tier AWS account and have the domain attached to my Godaddy account.
When you say you want to send and receive emails, what do you mean ?
Generally SES is used to send emails from an app that you run and you want this service to handle all the posting for you, from doc - why use Amazon SES
Building a large-scale email solution is often a complex and costly
challenge for a business. You must deal with infrastructure challenges
such as email server management, network configuration, and IP address
reputation. Additionally, many third-party email solutions require
contract and price negotiations, as well as significant up-front
costs. Amazon SES eliminates these challenges and enables you to
benefit from the years of experience and sophisticated email
infrastructure Amazon.com has built to serve its own large-scale
customer base.
The receiving part as noted in doc
When you use Amazon SES to receive messages on behalf of your verified
domains, you can configure Amazon SES to deliver your messages to an
Amazon S3 bucket, call your custom code via an AWS Lambda function, or
publish notifications to Amazon SNS. You can also configure Amazon SES
to drop or bounce messages you do not want to receive.
so on receipt, SES will trigger rules that you have defined.
From your question, it sounds like you want to use a basic email client to do sending/receiving of emails, in this case Amazon provides another service called Amazon Workmail which you can compare with google apps.
If you're really looking into sending email from an app using SES, you can review this link which explains how to do it with GoDaddy
I'm using the amazon SNS(Simple Notification Service) service to publish SMS/Emails but I did not found any way to receive reply from user.
Any user can subscribe or unsubscribe to receive messages but he/she can not send any reply to sender.
Please suggest any idea to implement the logic to receive reply via amazon service.
Thanks in Advance.
SNS is for notifications and you can can't receive the replies.
Instead you can use Simple Email Service (SES) : http://aws.amazon.com/ses/
If you need email template management, mail-merge variables etc (more specific email needs), you can consider third party services like: Mailchimp or Mandril.