Описание
API Mailer for AWS SES replaces wp_mail() with a direct Amazon SES API integration (SendRawEmail). There is no SMTP layer: PHPMailer only builds the message, which is then sent straight to the SES API.
The plugin focuses on correctness, performance, and operational clarity:
— Direct AWS SigV4 signed requests to SES
— Minimal overhead in the wp_mail() hook
— Optional background queue with Action Scheduler or wp_cron fallback
— Optional logging via WooCommerce logger or PHP error_log
— Clean, PSR-4 structured codebase
Key Features
- Direct SES API (SendRawEmail) integration — no SMTP required.
- Background sending queue with Action Scheduler or wp_cron fallback.
- Tiny-args queueing with job IDs to keep cron payloads small and private.
- Configurable rate limiting per second to stay under SES send rate.
- wp_mail() compatible: all headers (incl. List-Unsubscribe), attachments, inline images, phpmailer_init.
- Test tab to send a test email and a Status tab to fetch SES GetSendQuota.
- Logging via WooCommerce logger or PHP error_log, disabled by default.
- Credentials from wp-config (constants) or saved settings.
- Lightweight, minimal I/O, no Composer dependency.
- Uninstall cleanup toggle to remove settings and queued jobs on deletion.
Why It’s High Performance
- Avoids SMTP for the send path; uses PHPMailer only for MIME construction, then sends via SES API directly.
- Background queue returns control to the request immediately when enabled.
- Job payloads are stored server-side and referenced by a small
job_idto avoid large serialized cron arguments. - Logging is optional and disabled by default to keep I/O low.
Configuration
Credentials in wp-config (recommended)
Define the following constants above “That’s all, stop editing!” in wp-config.php, then enable “Read AWS credentials from wp-config” in the plugin settings.
define('SES_MAILER_ACCESS_KEY', 'YOUR_ACCESS_KEY_ID');
define('SES_MAILER_SECRET_KEY', 'YOUR_SECRET_ACCESS_KEY');
define('SES_MAILER_REGION', 'us-east-1');
When this mode is enabled, the Access Key, Secret, and Region fields are cleared, disabled, and ignored.
Background Sending
- When enabled, emails are queued and sent out of band by Action Scheduler if available, or by wp_cron as a fallback.
- The plugin stores the full email payload in an option keyed by
ses_mailer_job_{uuid}(autoload = no) and schedules a tiny cron/action with onlyjob_id. - Retries: up to 3 total attempts with exponential backoff (60s, then 120s).
- For consistent cron execution on low-traffic sites, configure a real system cron to call
wp-cron.phpregularly.
Rate Limiting
- A per-email pause is applied based on the configured send rate to avoid exceeding SES limits.
Logging
- When enabled, log entries route to WooCommerce Status Logs (source: api-mailer-for-aws-ses) if WooCommerce is active, or to the PHP error log otherwise.
- Logging is disabled by default. Uncheck «Disable logging» in settings to enable.
External Services
- This plugin connects to Amazon Simple Email Service (AWS SES) at
https://email.{region}.amazonaws.comto send email and to fetch sending quotas. - Data sent on each email: recipients, subject, message body, headers, attachments, and your AWS access key ID (signed via AWS SigV4); required to deliver the email.
- Data sent when checking quotas: your AWS access key ID and a signed request; no recipient data is sent.
- Service terms: https://aws.amazon.com/service-terms/ — Privacy: https://aws.amazon.com/privacy/
Translations
- Text domain:
api-mailer-for-aws-ses - Translation template:
languages/api-mailer-for-aws-ses.pot - Example: Danish
languages/api-mailer-for-aws-ses-da_DK.po(compile to.mofor runtime)
About the Author
API Mailer for AWS SES is built and maintained by beltoft.net.
Установка
- Upload the plugin to
wp-content/plugins/or install via the Plugins screen. - Activate the plugin.
- Go to Settings API Mailer for AWS SES.
- Provide AWS credentials and Region in one of two ways:
- Saved settings (fields on the Settings screen), or
- From wp-config (recommended for production).
- Optionally enable background sending and configure rate limit.
- Use the Test tab to send a test email.
Часто задаваемые вопросы
Q: I get 403 SignatureDoesNotMatch.
A: Check Access Key/Secret and ensure the Region matches your SES setup. Verify your “From” address is verified in SES.
Q: Do test emails appear in Logs?
A: Yes. Test emails are tagged and logged unless logging is disabled in settings.
Q: Do I need Action Scheduler installed?
A: No. If unavailable, the plugin falls back to wp_cron automatically. A real cron is recommended for consistent processing.
Q: Can I keep credentials out of the database?
A: Yes. Use the wp-config constants and enable “Read AWS credentials from wp-config”.
Участники и разработчики
«API Mailer for AWS SES» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
УчастникиПеревести «API Mailer for AWS SES» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
1.5
- Respect plugins that block emails.
- Keep List-Unsubscribe and other custom headers.
- Support inline images, named attachments and phpmailer_init.
- Other From addresses now go to Reply-To.
- Background queue keeps attachments and content type.
- Stronger secret key encryption. Re-enter the key if you downgrade.
1.4.2
- Tested with WordPress 7.1.
- Fix: failed sends now return false and fire
wp_mail_failed; successful sends firewp_mail_succeeded. - Fix: «Name » recipients are no longer mangled.
1.4.1
- Tested with WordPress 7.0.
1.4
- New maintainer: beltoft.net.
- Security: encrypt secret key at rest (AES-256-CBC), validate attachment paths against uploads/wp-content only.
- Logging: replaced custom file logger with WooCommerce logger (falls back to error_log); removed Logs tab. The old
wp-content/ses-mailer-logs/directory is no longer used and can be safely deleted. - Queue: job persistence checks throughout, retry scheduling failure handling, delete-safe stale job cleanup.
- Hardening: autoloader path sanitization, cron dedup lock, proper XML error handling, rate-limit via transients.
- Added PHPUnit test suite with WordPress function stubs.
1.3
- Use PHPMailer (bundled with WordPress) for MIME construction instead of manual MIME building; consistent with FluentSMTP and other major WP mailer plugins.
- Auto-detect HTML content when plugins send HTML without explicit Content-Type header.
- CC/BCC support via PHPMailer header parsing (previously silently dropped).
- Remove dead
SendEmailstructured API code and manual MIME helpers.
1.2
- Fix broken plain text generation in background queue (was using
wp_strip_all_tagsinstead ofhtml_to_text).
1.1
- Updated text domain to match plugin slug; aligned Action Scheduler group and translation assets.
- Documented AWS SES as an external service (data sent, endpoints, terms/privacy).
- Improved log path resolution using uploads directory helpers; removed direct core includes; log clearing uses
wp_delete_file. - Added Amazon SES setup guide and updated contributors list.
1.0.1
Rename plugin to “API Mailer for AWS SES”. Update text domain to api-mailer-for-aws-ses, language files, and internal identifiers.
1.0.0
Initial public release.
— Direct SendRawEmail integration
— Background queue with Action Scheduler / wp_cron
— Job ID indirection for small cron args
— Logging viewer with production disable
— Settings link in plugin list
— wp-config credential mode