165 lines
4.4 KiB
Markdown
165 lines
4.4 KiB
Markdown
# AWS SES Troubleshooting Guide
|
|
|
|
Your website now has enhanced error handling and logging. Here's how to troubleshoot email sending issues:
|
|
|
|
## 1. Check Browser Console
|
|
|
|
Open your website and:
|
|
1. Press F12 to open Developer Tools
|
|
2. Go to the "Console" tab
|
|
3. Submit a test form
|
|
4. Look for error messages
|
|
|
|
### Common Console Messages:
|
|
|
|
**Success:**
|
|
```
|
|
AWS SES configured successfully
|
|
Attempting to send email with subject: New Quote Request - PTSAerial - [service]
|
|
Email sent successfully: {MessageId: "..."}
|
|
```
|
|
|
|
**Common Errors:**
|
|
```
|
|
AWS SDK not loaded. Please check the script tag.
|
|
Error configuring AWS: [error details]
|
|
SES Error: MessageRejected
|
|
SES Error: AccessDenied
|
|
SES Error: InvalidParameterValue
|
|
```
|
|
|
|
## 2. Common Issues & Solutions
|
|
|
|
### Issue: "MessageRejected" Error
|
|
**Cause:** Email addresses not verified in SES
|
|
**Solution:**
|
|
1. Go to AWS SES Console
|
|
2. Navigate to "Verified identities"
|
|
3. Verify both `oli@ptslondon.co.uk` and `noreply@ptslondon.co.uk`
|
|
4. Check your email for verification links
|
|
|
|
### Issue: "AccessDenied" Error
|
|
**Cause:** IAM user lacks SES permissions
|
|
**Solution:**
|
|
1. Go to AWS IAM Console
|
|
2. Check your user has the SES policy attached
|
|
3. Ensure policy includes `ses:SendEmail` and `ses:SendRawEmail`
|
|
|
|
### Issue: "Sandbox" Restrictions
|
|
**Cause:** SES is in sandbox mode
|
|
**Solution:**
|
|
1. In SES Console, request production access
|
|
2. Or verify all recipient email addresses
|
|
3. Sandbox only allows verified recipients
|
|
|
|
### Issue: "Region" Mismatch
|
|
**Cause:** Wrong AWS region in config
|
|
**Solution:**
|
|
1. Check which region your SES is set up in
|
|
2. Update `region: 'eu-west-1'` in script.js to match
|
|
|
|
### Issue: "CORS" Errors
|
|
**Cause:** Browser security restrictions
|
|
**Solution:**
|
|
- This shouldn't occur with SES, but if it does, consider using a backend API instead
|
|
|
|
## 3. Verify SES Setup
|
|
|
|
### Check in AWS Console:
|
|
|
|
1. **SES Dashboard** → "Sending statistics"
|
|
- Should show attempted sends
|
|
- Check for bounce/complaint rates
|
|
|
|
2. **Verified identities**
|
|
- `oli@ptslondon.co.uk` should show "Verified"
|
|
- `noreply@ptslondon.co.uk` should show "Verified"
|
|
|
|
3. **Configuration sets** (optional)
|
|
- Can help with tracking delivery
|
|
|
|
## 4. Test with Minimal Example
|
|
|
|
Add this to your browser console to test SES directly:
|
|
|
|
```javascript
|
|
// Test AWS SES configuration
|
|
AWS.config.update({
|
|
region: 'eu-west-1',
|
|
accessKeyId: 'AKIA3C5Y7TIMPQ7PHLEM',
|
|
secretAccessKey: 'BPCPlS2X77KwgvFweOO3IebeT9U5gBNnZ5/7ZRX2WEtO'
|
|
});
|
|
|
|
const ses = new AWS.SES();
|
|
const params = {
|
|
Destination: { ToAddresses: ['oli@ptslondon.co.uk'] },
|
|
Message: {
|
|
Body: { Text: { Data: 'Test email from website' } },
|
|
Subject: { Data: 'Test Email' }
|
|
},
|
|
Source: 'noreply@ptslondon.co.uk'
|
|
};
|
|
|
|
ses.sendEmail(params, function(err, data) {
|
|
if (err) console.error('Error:', err);
|
|
else console.log('Success:', data);
|
|
});
|
|
```
|
|
|
|
## 5. Security Note
|
|
|
|
⚠️ **Important:** Your AWS credentials are currently visible in the browser source code. This is acceptable for testing but consider these alternatives for production:
|
|
|
|
### Option A: Backend API (Recommended)
|
|
Create a simple backend endpoint that handles email sending:
|
|
```javascript
|
|
// Instead of direct SES, call your API
|
|
fetch('/api/send-email', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(formData)
|
|
});
|
|
```
|
|
|
|
### Option B: Cognito Identity Pool
|
|
Use temporary credentials instead of permanent access keys.
|
|
|
|
## 6. Alternative: Quick Backend Solution
|
|
|
|
If SES continues to have issues, here's a simple Node.js backend you could deploy:
|
|
|
|
```javascript
|
|
// server.js
|
|
const express = require('express');
|
|
const AWS = require('aws-sdk');
|
|
const app = express();
|
|
|
|
AWS.config.update({
|
|
region: 'eu-west-1',
|
|
accessKeyId: process.env.AWS_ACCESS_KEY,
|
|
secretAccessKey: process.env.AWS_SECRET_KEY
|
|
});
|
|
|
|
app.post('/send-email', (req, res) => {
|
|
const ses = new AWS.SES();
|
|
// Email sending logic here
|
|
});
|
|
```
|
|
|
|
## 7. Monitoring
|
|
|
|
Check these regularly:
|
|
- AWS SES bounce rate (keep under 5%)
|
|
- AWS SES complaint rate (keep under 0.1%)
|
|
- Your website's email delivery success rate
|
|
|
|
## Next Steps
|
|
|
|
1. Check browser console for specific error messages
|
|
2. Verify email addresses in AWS SES
|
|
3. Ensure SES is out of sandbox mode or recipients are verified
|
|
4. Test with the minimal example above
|
|
5. Consider implementing a backend API for production use
|
|
|
|
Let me know what specific error messages you see in the console!
|