How to track when custom email is verified in aws ses - amazon-web-services

I am implementing a SAAS software where my customers will be able to send email using their custom from email. I am using AWS SES.
I created a custom email template and can send the email. User click on the link and email gets verified. But how my system will be updated when user click and verify the email?
boto3 API: send_custom_verification_email

You can subscribe to ses events (click, open, etc). There are different ways to consume event — SNS, CloudWatch, etc.
https://docs.aws.amazon.com/ses/latest/dg/monitor-sending-activity.html
As for verifying the email, it depends, if you're using a third-party service then it should handle it for you. If not, then you'd have to handle it yourself in the backend, you can redirect the user to the page and verify in the backend.

Related

Enable user to send and receive email through AWS SES

My knowledge of AWS is very basic and I am studying to enable a user to send and receive email using SES.
The user is created in IAM and with SES permission enabled.
The domain is already registered and working on AWS.
Do I need to create a email inside SMTP configuration or is there a option to create email on IAM user profile?
I recommend you to read the Doc first Because they clearly explained how it works. There are 2 main methods to send an email using SES.
1. SES Rest APIs
It's a REST API service for SES. You can send emails by calling API as an HTTP Request. Visit the below link for more info.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-api.html
2. SMTP
It's a traditional way. But if you want to access the SMTP server, You need to create SMTP credentials first. These credentials are unique to regions. If you are sending emails from multiple regions, You need to create a set of credentials for each.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html
Receiving Emails
SES allows you to receive emails too. But this feature only available in certain regions. You can access received emails via the following ways without SMTP,
Deliver incoming emails to the S3 bucket
Publish to SNS topic
Send to Amazon WorkMail
For more info: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html

How to verify email address in AWS SES

I have bought a domain,then I have created domain identity in SES and verified it successfully, now comes the email part. I have created email address in identity management that is user#example.com (assume that example.com is my domain), documentation states that I need to go to the email inbox and click on the email but what inbox they mean? How can I access this inbox of this address that I've just created? If I have to use my own email here then what's the point of adding a domain If I can use gmail smtp straight away? Can someone please clarify this?
Here is the clear answer:
At first, you need to purchase and verify your domain in SES(you've done this already, it's good to go for next step)
You need to write a support ticket to move your SES account out from sandbox mode as it's in sandbox mode by default(You need to provide all info AWS requires in detail)
moving out from sandbox mode
This might take 1 day around, finally you can get production SES status and check in your statistics section from SES console.
Next, you need to go AWS WorkMail service console and create your email accounts to be used for sender or receiver in your platform by your purchased domain(i.e, if your domain is abc.com, info#abc.com or support#abc.com).
When I say creating email accounts, it says you need to create email address, username and password for each email account.
Finally, If you need to check out the inbox for above created accounts, WorkMail provides a cool web client for it.
Here is the WorkMail web client documentation from AWS
It says this:
The web client URL looks like this: https://alias.awsapps.com/mail. Replace alias with the alias you received from your site administrator.
Here, alias is configured by you when you create your organization in WorkMail console.
The reason why SES requires to verify domain is something like ID verification of email sender, and verification of 3rd party email addresses gives us a flexibility to work with any other email addresses not registered in SES, also allow development and test before registration of domain in sandbox mode.
Cheers
The email address you want to verify must have existing mail service, before you can validate the address in SES.
From AWS docs, about receiving email
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html
When you receive email, Amazon SES processes it according to instructions you provide. For example, Amazon SES can deliver incoming mail to an Amazon S3 bucket, publish it to an Amazon SNS topic, or send it to Amazon WorkMail.
If you need an inbox service, use Amazon WorkMail.
Creating a IAM user doesn't create an inbox. And SES has no inbox capability at all. The point of validation is to allow sending in behalf of the service. In certain use cases, you can process inbound email via Lambda, store attachments on S3 etc. but there is no POP3/IMAP inbox-like service included in the SES.
Creating an IAM user is not required to validate your email. That is only for authentication purposes for accessing AWS account services.
AWS SES can receive emails and mostly this is used for automated email processing.
If you have verified in identity that you own the domain(by adding txt record in your domain DNS table) then by default you have verified all emails that fall in that domain.
You don't have to follow the steps to verify individual emails by clicking the link received on the emails.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html
From your example: since the domain examaple.com is verified, you don't have to again verify emails(user#example.com) that fall under same domain.
Individual email verification is for scenarios where you cant verify domain by placing dns records. Here you will not be able to receive emails, but if you still want to send emails from an address then you can verify it by clicking the link you receive on your inbox. This can be done with gmail or other mail providers.

Register email submitted in website to AWS SES

I have a website with a email subscription form on it. I was wondering if it was possible to have the subscribe email button register the email that was submitted on my AWS SES account? Is it possible to just use an HTTP post to achieve this?
SES is an SMTP server for sending emails. It is not for the management of subscriptions or contact lists. Email addresses need to be stored and managed somewhere else, such as DynamoDB. If you are looking for an email delivery API that also manages contacts, look at something like SendGrid or Mailchimp.
The "email addresses" tab of SES is for Verified Sender identities, which are addresses that you will be sending email from. It is not for storing recipients.
You are trying to send an email to multiple subscribers using SES, but in your scenario you should probably be looking at SNS instead. You can use AWS SDK to add subscribers to an SNS topic using the subscribe function, and then simply call SNS publish to publish a message to that topic and it will send an email to all subscribers.

Send email to new sign user using AWS sns with lambda function

I am working on one project with AWS lambda function, DynamoDB, serverless architecture with the node.js runtime environment.
Now thing is that I want to send an email when a new user signup in my system for email address confirmation.
First, I tried with SES(SMTP credentials) and nodemailer module. When we try to send an email using SES then we need to verify both the email addresses(From and TO). But thing is that suppose I verify my From email address but the new signup user has a new email address, so, this when I try to send an email to the new signup user's email address then it through error like email address not verified.
So, i want to know that if I want to send an email to this new signup user how can I send the email confirmation mail?
Can I use SNS with AWS lambda and serverless architecture?
Thanks in advance for the help.
I'm suspecting your Amazon SES is still in sandbox mode. As long as you are in sandbox mode, you can only do the following things:
You can only send mail to verified email addresses and domains, or to the Amazon SES mailbox simulator.
You can send a maximum of 200 messages per 24-hour period.
You can send a maximum of 1 message per second.
To get yourself removed out of sandbox mode, you need to open a SES Sending Limits Increase case to the AWS Support center.

Amazon SES - notifications for email verification

We use Amazon's SES service, and have set up Topics and Subscriptions under SNS (Simple Notification Service) so that we get notification emails when an email is bounced or successfully delivered. That's all working fine.
We sometimes send emails via SES on behalf of one of our partners, and before we can do that we need to verify their email address. The process is that the system asks SES to send out a verification email to the person saying "Example.com wants to send emails on your behalf, is that ok?", with a link for them to click. If they click it, then that email is marked as Verified within SES, and we can use it as a from address.
What I can't work out is how to automate the process of knowing whether they've clicked the link yet. I can log in to the AWS dashboard, and go and look at the list of verified email addresses, but i'd like to make it an automated process.
What would be ideal is if it worked the same way as bounces & deliveries: that i set up a "Verification" topic, and subscribe to it so we get an email like we do with bounces and deliveries. Then, the scheduled job that deals with incoming email notifications can say "Aha, this is a verification email for foobar#example.com: I'll mark their account as 'ses-verified'".
Does anyone know if it's possible to set this up? All the docs on the SES site just talk about bounces, deliveries and complaints.
thanks, Max
You can use the GetIdentityVerification api call in the SES part of the awssdk:
https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html
You could do this in a serverless way by having a lambda function do the check, and expose the lambda as an API endpoint to your application (among other ways).
Alternatively you could just try to send a single test email to a test/internal email address and check if it gives you an error - if its not verified, it will return an error immediately when you try to do the send.
EDIT:
If you want to use the CLI instead:
aws ses get-identity-verification-attributes --identities "mailbox#thedomain.com"