| 开发者 | bytecorestack |
|---|---|
| 更新时间 | 2026年10月24日 13:26 |
| PHP版本: | 7.2 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
mail(). It has no authentication, so Gmail, Outlook and Yahoo often send those messages to spam or reject them, and many hosts disable it entirely. That's why "WordPress not sending email" is one of the most common WordPress problems. The fix is SMTP: sending through a real mail server that signs in, such as Gmail, Microsoft 365, your host's mail server or a transactional email service.
Set up in about a minute
wp bcs-smtp test and wp bcs-smtp log listwp_mail(), so they use your SMTP connection automatically. There's nothing to change in those plugins.
Supported SMTP providers
Any provider that offers standard SMTP sign-in works:
assets/fonts): Outfit and Geist Mono.
bcs-smtp-manager folder to /wp-content/plugins/.The usual causes: your host has disabled PHP mail(), your SMTP password is wrong or has expired (Gmail and Microsoft app passwords can be revoked), the port and encryption don't match, or your host blocks outgoing SMTP ports. Send a test email from this plugin. It tells you which of these it is and shows the mail server's own reply.
SMTP is the standard, authenticated way to send email. WordPress's default PHP mail() doesn't sign in to anything, so its messages are often marked as spam or rejected. Sending through a real SMTP server (your host, Gmail, Microsoft 365 or a transactional email service) fixes that.
Yes. Use a Gmail app password: Google no longer accepts your normal account password for SMTP. Turn on 2-Step Verification, then create an app password under Security → App passwords. Google Workspace accounts can also use the SMTP relay service for higher sending limits.
Yes. Pick Microsoft 365 / Outlook and the server (smtp.office365.com, port 587, TLS) fills in. SMTP sign-in (SMTP AUTH) must be allowed for the mailbox in your Microsoft 365 admin center; see Microsoft's authenticated SMTP guide.
Yes. Any service that gives you SMTP credentials works. For Amazon SES, copy the SMTP endpoint for your region from the SES console, and use your SES SMTP credentials rather than your AWS access keys.
Yes. Any plugin that sends email through WordPress's wp_mail() function uses your SMTP connection automatically, with nothing to configure on their side.
Yes. Click View on any row of the Email log to open the email: a safe preview of the message, its HTML source, a plain-text version, every header and the names of any attachments. Failed emails also show the mail server's complete reply.
Each entry keeps the date, subject, sender, recipients, delivery status, any error, the message body, headers and attachment file names (never the files themselves). Entries are deleted automatically after 90 days. Saved emails can include sensitive details such as password reset links or form submissions, so only administrators can view the log.
Health checks run automatically every 15 minutes once SMTP is set up. Each check signs in to your mail server and checks your sender address, without sending an email. If a check fails, one alert goes to every channel you picked on the Alerts tab. You won't get another until mail has recovered and broken again.
On the Alerts tab, turn on failure alerts, tick the channel and paste its incoming webhook URL. Each channel has a setup guide link next to its field:
Yes. Use the custom webhook channel. It sends a JSON payload (event, site_name, error_msg, consecutive_failures and more) that automation tools can read: Zapier webhooks, Make webhooks, n8n Webhook node.
On the 1st of every month at 9:00 (your site's time zone), covering the whole previous month. "Send a report now" sends the current month so far.
No. It's built for transactional email such as orders, password resets, form notifications and account emails. Use a dedicated email marketing service for newsletters.
Yes. Set up your connection here and send a test email, then deactivate the other SMTP plugin. Switching doesn't affect your emails or other plugins.
Yes. It's encrypted before it's saved, using a random key the plugin creates for your site (or a BCS_SMTP_CRYPTO_KEY constant you can define in wp-config.php), and it's never sent anywhere except your own SMTP server.
Yes, on each site of a network. Each site is set up separately; there's no network-wide settings screen yet.
Yes. wp bcs-smtp test you@example.com sends a test email, and wp bcs-smtp log list lists recent log entries, with --status, --days and --format options.
BCS_SMTP_CRYPTO_KEY constant in wp-config.php. Existing passwords are moved over automatically.535 5.7.139 codes, and a blocked SMTP port times out after 20 seconds instead of hanging.wp bcs-smtp resend.bcs-smtp-manager) and all your settings are unchanged.
Resend failed emails — a new opt-in "Store failed email content" setting (Config tab, off by default) retains the body of an email only when it fails to send, so a "Resend" button now appears on failed rows in the Email Log. Resending creates a fresh log entry with its own delivery status; stored content auto-purges after a configurable number of days (default 7), independently of your overall log retention setting.
WP-CLI support — wp bcs-smtp test <email>, wp bcs-smtp resend <log_id>, and wp bcs-smtp log list for scripted test sends, resends, and log lookups from the command line or a CI/deploy pipeline.
Directory compliance — rewrote parts of the description and admin UI to remove comparative claims about other SMTP plugins, and documented the plugin's use of external services (SMTP server, alert webhooks, ipify.org, Microsoft 365 status API) in the External Services section, per WordPress.org directory guidelines.
Self-hosted admin fonts — the admin UI no longer loads DM Sans/DM Mono from the Google Fonts CDN; it uses the system font stack instead. Fixes a Plugin Check "offloaded content" error and removes an external request made on every visit to the settings page.
Readme fix — Tested up to now uses major.minor format (7.0) instead of including a patch version, per the WordPress.org readme spec.
Older versions are listed in changelog.txt, included with the plugin.