161 lines
4.5 KiB
Markdown
161 lines
4.5 KiB
Markdown
# AWS SES Setup Instructions
|
|
|
|
To enable email functionality for your PTSAerial contact forms using AWS SES, follow these steps:
|
|
|
|
## 1. AWS SES Setup
|
|
|
|
### Verify Email Addresses
|
|
1. Log into your AWS Console
|
|
2. Go to Amazon SES service
|
|
3. Navigate to "Verified identities"
|
|
4. Add and verify these email addresses:
|
|
- `oli@ptslondon.co.uk` (recipient)
|
|
- `noreply@ptslondon.co.uk` (sender - must be from your domain)
|
|
|
|
### Domain Verification (Recommended)
|
|
1. In SES, go to "Verified identities"
|
|
2. Click "Create identity" > "Domain"
|
|
3. Enter `ptslondon.co.uk`
|
|
4. Follow DNS verification steps
|
|
5. This allows sending from any address @ptslondon.co.uk
|
|
|
|
## 2. Create IAM User for Website
|
|
|
|
### Create IAM Policy
|
|
1. Go to IAM service in AWS Console
|
|
2. Click "Policies" > "Create policy"
|
|
3. Use JSON editor and paste:
|
|
```json
|
|
{
|
|
"Version": "2012-10-17",
|
|
"Statement": [
|
|
{
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"ses:SendEmail",
|
|
"ses:SendRawEmail"
|
|
],
|
|
"Resource": "*"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
4. Name it `PTSAerial-SES-Send-Policy`
|
|
|
|
### Create IAM User
|
|
1. Go to "Users" > "Create user"
|
|
2. Username: `ptsaerial-website`
|
|
3. Attach the policy you just created
|
|
4. Create access keys for "Application running outside AWS"
|
|
5. **Save the Access Key ID and Secret Access Key securely**
|
|
|
|
## 3. Update JavaScript Configuration
|
|
|
|
In your `script.js` file, update these values:
|
|
|
|
```javascript
|
|
const awsConfig = {
|
|
region: 'eu-west-1', // Your SES region (e.g., us-east-1, eu-west-1, us-west-2)
|
|
accessKeyId: 'YOUR_ACCESS_KEY_ID', // From IAM user
|
|
secretAccessKey: 'YOUR_SECRET_ACCESS_KEY', // From IAM user
|
|
};
|
|
```
|
|
|
|
And update the sender email:
|
|
```javascript
|
|
Source: 'noreply@ptslondon.co.uk', // Must be verified in SES
|
|
```
|
|
|
|
## 4. SES Sandbox vs Production
|
|
|
|
### If in Sandbox Mode (default):
|
|
- Can only send to verified email addresses
|
|
- Limited to 200 emails per day
|
|
- Maximum 1 email per second
|
|
|
|
### To Move to Production:
|
|
1. In SES console, click "Request production access"
|
|
2. Fill out the form explaining your use case
|
|
3. AWS will review (usually approved within 24 hours)
|
|
4. Production allows sending to any email address
|
|
|
|
## 5. Security Considerations
|
|
|
|
### For Production Use (More Secure):
|
|
Instead of putting credentials in the frontend, consider:
|
|
|
|
1. **API Gateway + Lambda** (Recommended):
|
|
- Create a Lambda function to send emails
|
|
- Use API Gateway to expose an endpoint
|
|
- Call the API from your website
|
|
- Credentials stay server-side
|
|
|
|
2. **Cognito Identity Pools**:
|
|
- Use temporary credentials
|
|
- More secure than permanent access keys
|
|
|
|
### Basic Frontend Implementation:
|
|
For testing/simple use, the current implementation works but:
|
|
- Access keys are visible in the browser
|
|
- Only use this for low-security scenarios
|
|
- Consider IP restrictions in IAM policy
|
|
|
|
## 6. Test Configuration
|
|
|
|
1. Update the configuration values in `script.js`
|
|
2. Ensure SES is out of sandbox mode OR oli@ptslondon.co.uk is verified
|
|
3. Test both contact forms
|
|
4. Check oli@ptslondon.co.uk for emails
|
|
5. Monitor AWS SES console for send statistics
|
|
|
|
## 7. Monitoring & Troubleshooting
|
|
|
|
### SES Console Monitoring:
|
|
- Check "Sending statistics" for delivery rates
|
|
- Review "Suppression list" for bounced emails
|
|
- Monitor "Reputation metrics"
|
|
|
|
### Common Issues:
|
|
- **Invalid sender**: Ensure sender email is verified
|
|
- **Access denied**: Check IAM permissions
|
|
- **Sandbox restrictions**: Verify recipient or request production access
|
|
- **Region mismatch**: Ensure correct region in config
|
|
|
|
### Browser Console Errors:
|
|
Check for:
|
|
- AWS SDK loading errors
|
|
- CORS issues (not applicable for SES)
|
|
- Network connectivity
|
|
- Invalid credentials
|
|
|
|
## 8. Email Content Details
|
|
|
|
### Quote Request Emails Include:
|
|
- Customer name, email, phone, company
|
|
- Service type and location
|
|
- Preferred date and budget range
|
|
- Detailed project description
|
|
- HTML formatted table for easy reading
|
|
|
|
### Contact Form Emails Include:
|
|
- Customer name, email, subject
|
|
- Message content
|
|
- Professional HTML formatting
|
|
|
|
## 9. Cost Information
|
|
|
|
AWS SES Pricing (as of 2025):
|
|
- First 62,000 emails per month: $0.10 per 1,000 emails
|
|
- Additional emails: $0.10 per 1,000 emails
|
|
- No monthly fees
|
|
- Very cost-effective for business use
|
|
|
|
## 10. Regional Recommendations
|
|
|
|
Choose your region based on:
|
|
- **eu-west-1** (Ireland): Good for UK business
|
|
- **us-east-1** (N. Virginia): Lowest cost, highest feature availability
|
|
- **eu-west-2** (London): UK data residency if required
|
|
|
|
Your current configuration uses `eu-west-1` which is ideal for UK operations.
|