Linux 软件免费装
Banner图

Custom SMTP: Email Deliverability - FREE & Easy-to-use

开发者 nicolasverlhiac
更新时间 2026年8月13日 19:28
PHP版本: 7.4 及以上
WordPress版本: 7.0
版权: GPLv2 or later

标签

email smtp deliverability email logger mail logger

下载

2.4.1 2.2.0 1.6.2 1.8.0 1.7.1 1.8.1 1.9.0 2.0.0 2.1.0 1.7.0 2.2.1 2.4.0 2.5.0 2.6.0 2.6.1 2.7.0 2.7.1 2.7.2 2.3.0 2.7.3 2.7.4

详情介绍:

Make your WordPress email arrive WordPress still hands your email to the PHP mail() function. Most hosts have switched it off or throttled it because spammers loved it, and where it still runs, unauthenticated mail lands in spam. If your contact form says thank you and nothing ever arrives, this is why. Custom SMTP sends your email through the provider you already use instead: your host's SMTP server, Gmail, Outlook, Brevo, SendGrid, Mailgun, Postmark or the Amazon SES API. It logs every message with its outcome, lets you preview and resend failures, and alerts you when sending spikes or starts failing. Everything is in the free plugin: no account to create, no third-party relay, no pro version. Built for modern WordPress: WordPress 7.0 ready, PHPMailer 7.0.2 compatible, stateless / cloud-ready (Docker, Kubernetes), and fully translated in English and French. Documentation lives at customsmtp.com/docs/, with step-by-step guides for twelve providers and a developer guide covering constants, environment variables and the Amazon SES API. Send through your own SMTP provider Point the plugin at the server you already pay for or the free tier you already use, with a preset that fills the technical values for you: A log of every email, with preview and resend Never wonder if your emails were sent again. Logging works out of the box and captures every message going through wp_mail(): WooCommerce order notifications, contact form submissions, password resets, all of it. Unusual Usage Alerts A compromised contact form or a runaway plugin can turn your site into a spam relay, and a revoked password or an exhausted provider quota can stop your emails silently. Custom SMTP watches for both and warns you. Manage WordPress Notifications WordPress sends a handful of emails on its own, and some of them get old fast: a notice to the administrator every single time a user resets their password, a report after every automatic plugin update, a message for every comment awaiting moderation. Switch off the ones you do not want, one checkbox each, no code. Deliverability, privacy, security For developers: containers, config-as-code, Amazon SES API The developer guide covers this surface in depth; the short version:

安装:

  1. Install Custom SMTP either via the WordPress.org plugin repository or by uploading the files to your server.
  2. Navigate to Settings > Custom SMTP in the WordPress admin.
  3. Select a provider preset (Gmail, Outlook, AWS SES, SendGrid, Mailgun, Brevo, Postmark, Mailjet, Zoho, Yahoo, iCloud, Scaleway) or pick "Other / Custom" and enter your SMTP details manually.
1, 2, 3: You're done! On AWS (ECS/Fargate, EC2)? Choose the Amazon SES (API · IAM role) mailer instead of SMTP to send with no stored credentials — see the SES question in the FAQ.

屏幕截图:

  • SMTP Settings - pick a provider preset (Gmail, Brevo, SendGrid and more), fill in your credentials and you are done. The status bar confirms email delivery is active.
  • Email Preview - click any logged email to read its full content in an Outlook-style sidebar, without sending anything again.
  • Unusual Usage Alerts - get warned by email, webhook or admin notice when sending spikes or delivery failures pile up. Every threshold is yours to tune.
  • Test tools - check your configuration in one click: test the SMTP connection or send yourself a real test email.

常见问题:

Where do I find the documentation?

On customsmtp.com/docs/, which covers every screen and setting of the plugin. Each provider preset also has its own step-by-step guide, with the exact values the preset fills in. The developer guide goes further: forcing any setting from a PHP constant or an environment variable, running on immutable or containerized WordPress, and sending through the Amazon SES API with an IAM role. For anything not covered there, the support forum on this page is the right place to ask.

What SMTP settings should I use?

Custom SMTP includes presets for popular providers (Gmail, Outlook, AWS SES, SendGrid, etc.). Just select your provider and settings are auto-filled.

List of SMTP Servers

Here's a reference list of common SMTP servers: Professional Email Services

Does it work with WooCommerce?

Yes! Custom SMTP logs all emails sent from WordPress, including WooCommerce order confirmations, shipping notifications, and customer emails.

Is it compatible with contact form plugins?

Yes, it works with Contact Form 7, WPForms, Gravity Forms, and any plugin that uses WordPress wp_mail() function.

Is it compatible with stateless/containerized WordPress?

Yes. Custom SMTP is fully stateless-compatible and works on ephemeral infrastructure (Docker, Kubernetes, AWS ECS/Fargate, Google Cloud Run, etc.) without shared storage like EFS or NFS. The plugin stores all data in the WordPress database:

  • Settings in wp_options
  • Email logs in a custom database table
  • CSV exports streamed directly to the browser (no temp files)
  • Log purge scheduled via WP-Cron (database-backed)
It also works with modern WordPress stacks like Bedrock and Trellis, and can run on a read-only filesystem. Notes for stateless deployments:
  • Ensure WordPress salts (LOGGED_IN_KEY, LOGGED_IN_SALT) are consistent across all instances — the SMTP password encryption depends on them.
  • If DISABLE_WP_CRON is set to true, configure an external cron to trigger wp-cron.php so automatic log purge runs properly.
  • On AWS, prefer the Amazon SES (API) mailer with an IAM role (see the SES question below) — it removes the need to store any SMTP credentials at all.

Can I send through Amazon SES without storing any credentials?

Yes. Custom SMTP includes an Amazon SES (API) mailer that authenticates through your AWS IAM role (the ECS task role or EC2 instance role) using the AWS default credential chain. You never enter or store an access key, secret key, or SMTP credential — ideal for stateless, containerized WordPress on AWS ECS/Fargate. In Settings > Custom SMTP, choose "Amazon SES (API · IAM role)" as the mailer, set the region and a verified sender address (or inject them as environment variables), and you're done. You can also provide a SES Configuration Set for bounce/complaint tracking, and "Send Test Email" returns the SES MessageId so you can confirm the send on the AWS side. The following environment variables / PHP constants take priority over the saved settings, so the same container image works across environments:

  • SES_REGION (falls back to AWS_REGION) — e.g. eu-west-3
  • SES_FROM_EMAIL — the verified sender address
  • SES_CONFIG_SET — optional SES configuration set
The message is sent as raw MIME, so HTML, attachments, CC/BCC, Reply-To and custom headers are all preserved. The mailer works whether or not the AWS SDK for PHP is installed (it falls back to a built-in signed API client), and SES sends are logged in the Email Logs like any other email. This is different from the existing Amazon SES SMTP preset, which uses SMTP credentials — the new mailer uses the SES API and your IAM role instead.

Can I configure everything from environment variables (config-as-code)?

Yes. Every setting can be forced from a PHP constant or environment variable, which takes priority over the value saved in the database — ideal for immutable Docker images and DISALLOW_FILE_MODS deployments. Use CUSTOM_SMTP_<SETTING> in uppercase, for example:

  • CUSTOM_SMTP_MAILER_TYPEsmtp or ses_api
  • CUSTOM_SMTP_HOST, CUSTOM_SMTP_PORT, CUSTOM_SMTP_SECURE, CUSTOM_SMTP_USERNAME, CUSTOM_SMTP_PASSWORD
  • CUSTOM_SMTP_MAILFROM, CUSTOM_SMTP_FROMNAME, CUSTOM_SMTP_LOG_RETENTION
  • CUSTOM_SMTP_ALERTS_ENABLED, CUSTOM_SMTP_ALERT_EMAIL, CUSTOM_SMTP_ALERT_WEBHOOK, CUSTOM_SMTP_ALERT_MAX_PER_HOUR, CUSTOM_SMTP_ALERT_MAX_PER_DAY, CUSTOM_SMTP_ALERT_COOLDOWN
The Amazon SES shortcuts also apply: SES_REGION (or AWS_REGION), SES_FROM_EMAIL, SES_CONFIG_SET. An empty value counts as "not set", so it never overrides anything. To force a boolean setting off, give it an explicit value: CUSTOM_SMTP_ALERTS_ENABLED=false (or 0), not an empty string. To switch an entire Multisite network to Amazon SES with no database changes, set in your container: CUSTOM_SMTP_MAILER_TYPE=ses_api, SES_REGION=eu-west-3, SES_FROM_EMAIL=no-reply@example.com. Values are resolved from PHP constants, then getenv(), $_ENV, and $_SERVER. The $_SERVER source means FrankenPHP (including worker mode) and Bedrock-style stacks work with plain environment variables — no constants required. On Multisite, the plugin also reads a network-wide option (via get_site_option) beneath any per-site option, so a single configuration can apply to all sites. Fields supplied by the environment are shown read-only in the settings page with a badge naming the source variable. (A password supplied via CUSTOM_SMTP_PASSWORD is used as-is; only stored passwords are encrypted at rest.)

Can AI assistants or automation tools manage my SMTP?

Yes, on WordPress 6.9+. Custom SMTP registers two abilities with the WordPress Abilities API:

  • custom-smtp/connection-health returns the current SMTP state (configured, host, port, encryption, auth, logging retention) — useful for diagnostics and monitoring.
  • custom-smtp/send-test-email triggers a test email through the configured SMTP server.
Both abilities are accessible to MCP-compatible AI clients, automation workflows (n8n, Make), and other plugins. They enforce the same capability check as the wp-admin interface (manage_options), so unprivileged users or scripts cannot invoke them.

更新日志:

2.7.4 The password reset switch now holds on every reset form 2.7.3 Dead v1.x files removed from the package, translations unblocked 2.7.2 Scaleway provider preset, refreshed listing 2.7.1 Documentation links 2.7.0 Manage WordPress notifications 2.6.1 Fixes 2.6.0 Unusual usage alerts 2.5.0 Resend failed emails from the logs 2.4.1 Environment compatibility 2.4.0 Config-as-code: constant/env overrides for every setting + Multisite network settings Config-as-code 2.3.0 New mailer: Amazon SES API with IAM role authentication New Feature — Amazon SES (API) mailer 2.2.1 Documentation update 2.2.0 WordPress 7 compatibility release WordPress 7 Compatibility 2.1.0 Release Date - May 26, 2026 New Features 2.0.0 Release Date - February 4, 2026 Major Release - Architecture Refactor & Email Logging New Features 1.9.0 Release Date - December 5, 2025 Security 1.8.1 Release Date - December 5, 2025 Fixed 1.8.0 Release Date - December 4, 2025 Fixed 1.7 Release Date - July 5, 2024 Improved 1.6 Release Date - April 3, 2024 1.5 Release Date - March 14, 2024 1.4 Release Date - March 12, 2024