initial
This commit is contained in:
164
troubleshooting.md
Normal file
164
troubleshooting.md
Normal file
@@ -0,0 +1,164 @@
|
||||
# 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!
|
||||
Reference in New Issue
Block a user