一键导入
ses
Manage Amazon SES email sending, identities, configuration sets, templates, and suppression lists via AWS CLI.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manage Amazon SES email sending, identities, configuration sets, templates, and suppression lists via AWS CLI.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Manage AWS Certificate Manager certificates, validation, renewal, and import for ALB, CloudFront, and API Gateway via AWS CLI.
Manage Amazon API Gateway REST APIs, HTTP APIs, WebSocket APIs, stages, and deployments via AWS CLI.
Manage EC2 Auto Scaling groups, launch templates, scaling policies, and scheduled actions via AWS CLI.
Manage Elastic Load Balancers (ALB, NLB, CLB), target groups, listeners, and health checks via AWS CLI.
Manage AWS Organizations accounts, OUs, SCPs, and delegated administration via AWS CLI.
Manage Amazon SageMaker notebooks, training jobs, models, endpoints, and pipelines via AWS CLI.
| name | ses |
| description | Manage Amazon SES email sending, identities, configuration sets, templates, and suppression lists via AWS CLI. |
| metadata | {"openclaw":{"emoji":"✉️","requires":{"bins":["aws"]}}} |
Use this skill for email operations: verifying identities, sending emails, managing templates, configuring email events, managing suppression lists, and monitoring sending reputation.
ses:* for full access, or scoped policiessesv2) — this skill covers both v1 and v2 commands# Get account sending status
aws sesv2 get-account
# Get sending quota and stats
aws ses get-send-quota
aws ses get-send-statistics
# List verified email identities
aws sesv2 list-email-identities \
--query 'EmailIdentities[*].[IdentityType,IdentityName,SendingEnabled]' --output table
# Get identity details (DKIM, verification)
aws sesv2 get-email-identity --email-identity <identity>
# List configuration sets
aws sesv2 list-configuration-sets --output table
# Get configuration set details
aws sesv2 get-configuration-set --configuration-set-name <config-set>
# List email templates
aws sesv2 list-email-templates \
--query 'TemplatesMetadata[*].[TemplateName,CreatedTimestamp]' --output table
# Get a template
aws sesv2 get-email-template --template-name <template-name>
# List suppressed destinations (bounces, complaints)
aws sesv2 list-suppressed-destinations \
--query 'SuppressedDestinationSummaries[*].[EmailAddress,Reason,CreatedTimestamp]' --output table
# List contact lists
aws sesv2 list-contact-lists --output table
# List contacts in a list
aws sesv2 list-contacts --contact-list-name <list-name> \
--query 'Contacts[*].[EmailAddress,UnsubscribeAll,CreatedTimestamp]' --output table
# Get deliverability dashboard
aws sesv2 get-deliverability-dashboard-options
# Verify an email address
aws sesv2 create-email-identity --email-identity user@example.com
# Verify a domain (returns DKIM tokens)
aws sesv2 create-email-identity --email-identity example.com
# Get DKIM tokens for DNS setup
aws sesv2 get-email-identity --email-identity example.com \
--query 'DkimAttributes.Tokens'
# Enable DKIM signing
aws sesv2 put-email-identity-dkim-attributes \
--email-identity example.com \
--signing-enabled
⚠️ Cost note: SES charges $0.10 per 1,000 emails sent. Free tier: 62,000 emails/month when sent from EC2. Receiving: $0.10 per 1,000 emails + $0.09/GB attachment.
# Send a simple email
aws sesv2 send-email \
--from-email-address sender@example.com \
--destination '{"ToAddresses": ["recipient@example.com"]}' \
--content '{
"Simple": {
"Subject": {"Data": "Test Subject"},
"Body": {"Text": {"Data": "Hello from SES!"}}
}
}'
# Send HTML email
aws sesv2 send-email \
--from-email-address sender@example.com \
--destination '{"ToAddresses": ["recipient@example.com"]}' \
--content '{
"Simple": {
"Subject": {"Data": "HTML Test"},
"Body": {
"Html": {"Data": "<h1>Hello</h1><p>This is an HTML email.</p>"},
"Text": {"Data": "Hello. This is a text fallback."}
}
}
}'
# Send using a template
aws sesv2 send-email \
--from-email-address sender@example.com \
--destination '{"ToAddresses": ["recipient@example.com"]}' \
--content '{
"Template": {
"TemplateName": "<template-name>",
"TemplateData": "{\"name\": \"John\", \"order_id\": \"12345\"}"
}
}'
# Send with a configuration set (for tracking)
aws sesv2 send-email \
--from-email-address sender@example.com \
--destination '{"ToAddresses": ["recipient@example.com"]}' \
--content '{"Simple": {"Subject": {"Data": "Tracked Email"}, "Body": {"Text": {"Data": "Hello!"}}}}' \
--configuration-set-name <config-set>
# Send bulk templated email
aws sesv2 send-bulk-email \
--from-email-address sender@example.com \
--default-content '{"Template": {"TemplateName": "<template-name>", "TemplateData": "{\"company\": \"ACME\"}"}}' \
--bulk-email-entries '[
{"Destination": {"ToAddresses": ["user1@example.com"]}, "ReplacementEmailContent": {"ReplacementTemplate": {"ReplacementTemplateData": "{\"name\": \"Alice\"}"}}},
{"Destination": {"ToAddresses": ["user2@example.com"]}, "ReplacementEmailContent": {"ReplacementTemplate": {"ReplacementTemplateData": "{\"name\": \"Bob\"}"}}}
]'
# Create an email template
aws sesv2 create-email-template \
--template-name <template-name> \
--template-content '{
"Subject": "Order Confirmation #{{order_id}}",
"Html": "<h1>Thanks {{name}}</h1><p>Your order #{{order_id}} is confirmed.</p>",
"Text": "Thanks {{name}}. Your order #{{order_id}} is confirmed."
}'
# Update a template
aws sesv2 update-email-template \
--template-name <template-name> \
--template-content '{
"Subject": "Updated: Order #{{order_id}}",
"Html": "<h1>Hi {{name}}</h1><p>Updated template.</p>",
"Text": "Hi {{name}}. Updated template."
}'
# Test a template (render with data)
aws ses test-render-template \
--template-name <template-name> \
--template-data '{"name": "Test User", "order_id": "99999"}'
# Create a configuration set
aws sesv2 create-configuration-set --configuration-set-name <config-set>
# Add SNS event destination (track bounces, complaints)
aws sesv2 create-configuration-set-event-destination \
--configuration-set-name <config-set> \
--event-destination-name bounce-notify \
--event-destination '{
"Enabled": true,
"MatchingEventTypes": ["BOUNCE", "COMPLAINT"],
"SnsDestination": {"TopicArn": "<sns-topic-arn>"}
}'
# Add email to suppression list
aws sesv2 put-suppressed-destination \
--email-address bounced@example.com \
--reason BOUNCE
# Remove from suppression list
aws sesv2 delete-suppressed-destination --email-address bounced@example.com
🛑 DESTRUCTIVE — Always confirm with the user before executing any of these commands.
# Delete an email identity
aws sesv2 delete-email-identity --email-identity <identity>
# Delete a template
aws sesv2 delete-email-template --template-name <template-name>
# Delete a configuration set
aws sesv2 delete-configuration-set --configuration-set-name <config-set>
# Delete a contact list
aws sesv2 delete-contact-list --contact-list-name <list-name>
# Verify domain
aws sesv2 create-email-identity --email-identity example.com
# Create configuration set with tracking
aws sesv2 create-configuration-set --configuration-set-name production-emails
aws sesv2 create-configuration-set-event-destination \
--configuration-set-name production-emails \
--event-destination-name all-events \
--event-destination '{
"Enabled": true,
"MatchingEventTypes": ["SEND", "DELIVERY", "BOUNCE", "COMPLAINT", "REJECT"],
"SnsDestination": {"TopicArn": "<sns-topic-arn>"}
}'
echo "=== Sending Quota ==="
aws ses get-send-quota \
--query '{Max24HourSend:Max24HourSend,SentLast24Hours:SentLast24Hours,MaxSendRate:MaxSendRate}' \
--output table
echo "=== Suppressed Addresses ==="
aws sesv2 list-suppressed-destinations \
--query 'SuppressedDestinationSummaries | length(@)'
| Error | Cause | Fix |
|---|---|---|
MessageRejected | Sender not verified or sandbox | Verify sender identity; request production access |
MailFromDomainNotVerifiedException | MAIL FROM domain not set up | Configure custom MAIL FROM or use default |
AccountSendingPausedException | Sending suspended by AWS | Check bounce/complaint rates; contact AWS support |
ConfigurationSetDoesNotExist | Config set not found | Verify with list-configuration-sets |
TemplateDoesNotExist | Template not found | Check template name with list-email-templates |
| Email in spam folder | Missing DKIM/SPF/DMARC | Set up DKIM, SPF, and DMARC DNS records |