About AWS SES
Amazon Simple Email Service (SES) is a cost-effective email service for high-volume sending. It integrates well with other AWS services and offers flexible pricing.
Website: aws.amazon.com/ses
Prerequisites
- An AWS account
- AWS SES configured in your region
- IAM credentials with SES permissions
- Verified email or domain
Getting Credentials
Create an IAM User
- Go to IAM in AWS Console
- Click Users > Add user
- Name it (e.g., “mailshit-ses”)
- Select Programmatic access
- Attach the
AmazonSESFullAccesspolicy (or create a more restrictive policy) - Complete creation and save the Access Key ID and Secret Access Key
Minimal IAM Policy
For better security, use a restrictive policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
Configuration
Add AWS SES in mailshit:
- Go to Settings > Providers
- Click Add Provider
- Select AWS SES
- Enter the following:
| Field | Description | Example |
|---|---|---|
| Access Key ID | IAM user access key | AKIA... |
| Secret Access Key | IAM user secret key | abc123... |
| Region | AWS region | us-east-1 |
| From Email | Verified sender email | hello@yourdomain.com |
| From Name | Display name (optional) | Your Company |
- Click Save
Available Regions
| Region Code | Location |
|---|---|
| us-east-1 | US East (N. Virginia) |
| us-west-2 | US West (Oregon) |
| eu-west-1 | EU (Ireland) |
| eu-central-1 | EU (Frankfurt) |
| ap-southeast-1 | Asia Pacific (Singapore) |
| ap-southeast-2 | Asia Pacific (Sydney) |
Sandbox Mode
New SES accounts start in sandbox mode:
- Can only send to verified email addresses
- Limited to 200 emails per 24 hours
- Limited to 1 email per second
Moving Out of Sandbox
- Go to SES > Account dashboard
- Click Request production access
- Fill out the form explaining your use case
- Wait for approval (usually 24 hours)
Verifying Senders
Verify Email Address
- Go to SES > Verified identities
- Click Create identity
- Select Email address
- Enter your email and click Create
- Click the verification link
Verify Domain (Recommended)
- Go to SES > Verified identities
- Click Create identity
- Select Domain
- Enter your domain
- Add the DNS records SES provides
- Click Verify
Pricing
AWS SES is extremely cost-effective:
- $0.10 per 1,000 emails
- First 62,000 emails free if sent from EC2
- No monthly fees
Example Response
{
"success": true,
"type": "sent",
"messageId": "ses-msg-abc123..."
}
Best Practices
- Set up DKIM and SPF through domain verification
- Monitor reputation metrics in SES dashboard
- Use configuration sets for tracking
- Handle bounces and complaints via SNS notifications
Troubleshooting
“Email address is not verified”
- Verify your sender identity in SES
- If in sandbox, also verify recipient addresses
“Access Denied”
- Check IAM policy includes ses:SendEmail
- Verify Access Key ID and Secret are correct
“Throttling” errors
- You’re hitting send rate limits
- Request production access or implement rate limiting