How to Set Up WordPress SMTP So Site Emails Arrive
A new member signs up for your guild site, waits for the welcome email, and nothing arrives. Password resets vanish, contact form messages never reach you, and you only find out when someone complains on Discord.

A new member signs up for your guild site, waits for the welcome email, and nothing arrives. Password resets vanish, contact form messages never reach you, and you only find out when someone complains on Discord. Setting up WordPress SMTP fixes this in most cases, and it takes about 20 minutes once you know which settings matter.
Below: why mail fails, which service to pick, the setup steps, and how to confirm delivery.
Why WordPress emails go missing
Out of the box, WordPress sends email through a PHP function called wp_mail, which hands the message to whatever mail program your web host runs on the server. That server was built to host websites, not to deliver mail. Gmail, Outlook and Yahoo look at where a message came from, and a shared hosting server with no proof that it may send for your domain looks a lot like a spammer.
The result is one of three outcomes:
- The message is rejected outright and silently dropped.
- It is accepted but sent straight to spam.
- It arrives hours late because the receiving server throttled it.
None of these show up as errors in your dashboard. WordPress thinks the email went out, so you get no warning at all.
What WordPress SMTP actually changes
SMTP is the standard protocol mail servers use to pass messages to each other. When you configure WordPress SMTP, you tell the site to stop using the host's mail program and instead log in to a proper sending service with a username and password or an API key. That service has a good sending reputation, signs your messages, and publishes the DNS records that prove the mail is allowed.
Three DNS records do most of the work:
- SPF lists which servers may send mail for your domain.
- DKIM adds a cryptographic signature that receiving servers can verify.
- DMARC tells receivers what to do when SPF or DKIM fails, and sends you reports.
Since early 2024, Gmail and Yahoo require SPF and DKIM for most senders, plus a DMARC record for anyone sending in bulk. A plugin alone does not satisfy those rules. The DNS records are the part people skip, and they are the part that decides whether mail gets through.
Choosing a sending service for a small site
A fan site or clan site rarely sends more than a few hundred emails a month: registrations, password resets, comment notifications and form messages. That volume fits inside most free tiers.
| Option | Typical free allowance | Good for | Watch out for |
|---|---|---|---|
| Transactional service (Brevo, SendLayer, Mailgun style) | About 100 to 300 emails a day | Most community sites | Some free plans add a small footer or expire after a trial |
| Your own Google Workspace or Microsoft 365 mailbox | Hundreds per day per user | Sites that already pay for business email | Needs app passwords or OAuth setup |
| Host's own SMTP account | Varies, often 100 to 500 per hour | Quick fix on decent hosts | Shares reputation with other customers |
| Personal Gmail account | About 500 per day | Testing only | From address must be the Gmail address, which hurts trust |
For most gaming communities I recommend a dedicated transactional service. It keeps site mail separate from your personal inbox, and if a spam bot hammers your registration form, the damage stays inside that account.
How to set up WordPress SMTP step by step
Take a fresh backup before you start. Plugin changes rarely break anything, but a proper WordPress backup costs nothing and saves an evening if something goes wrong.
- Create the sending account. Sign up with your chosen service and add your domain, for example yourguild.com.
- Add the DNS records. The service shows you an SPF value, one or two DKIM records and usually a DMARC suggestion. Add them in your domain registrar or DNS host. If you already have an SPF record, merge the new include into it instead of creating a second one, because two SPF records break both.
- Wait for verification. DNS changes take anywhere from 5 minutes to a few hours. The service dashboard will show green ticks when it can see the records.
- Install one SMTP plugin. WP Mail SMTP, FluentSMTP and Post SMTP all work well. FluentSMTP is free with no upsell nags, which I like for volunteer run sites.
- Enter the connection details. Pick your service from the list if it has a native integration and paste the API key. Otherwise use generic SMTP: the host name, port 587 with TLS, and the username and password from the service.
- Set the From address. Use an address on your own domain, such as [email protected] or [email protected], and tick the option to force it on every message so other plugins cannot override it.
- Send a test email. Every SMTP plugin has a test tool. Send one to a Gmail address and one to an Outlook address.
Checking that it really worked
Arriving is not the same as arriving properly. In Gmail, open the test message, click the three dot menu and choose "Show original". Look for three lines near the top: SPF PASS, DKIM PASS and DMARC PASS. If any says FAIL or is missing, go back to the DNS step. A common mistake is a DKIM record pasted with an extra space or with the domain name added twice by the registrar.
Then turn on email logging in your SMTP plugin. FluentSMTP and WP Mail SMTP both keep a log of every message and whether the service accepted it. When a member says they never got a reset link, the log tells you in seconds whether the site sent it.
Why you should not install three mail plugins at once
A common forum tip is to stack an SMTP plugin, a separate email log plugin and an email template plugin. I would push back on that. Each one hooks into wp_mail, and when two plugins both try to replace the mailer, the last one to load wins without telling you.
Pick a single plugin that handles sending and logging together. If you need nicer templates, see if your membership or forum plugin already offers them. Fewer moving parts means fewer silent failures, and it keeps your plugin list short. If you have tried several mail plugins over the years, our guide to removing unused WordPress plugins shows how to clear the leftovers they leave in the database.
Keeping site email healthy over time
Once it works, a few habits keep it working:
- Add a CAPTCHA or honeypot to registration and contact forms. Spam signups trigger welcome emails to fake addresses, and high bounce rates damage your sending reputation.
- Check the email log once a month for a run of failures.
- Read the DMARC summary reports, or point them at a free report reader, to catch anyone spoofing your domain.
- Rotate the API key if a volunteer with admin access leaves the team.
More practical setup guides for community sites are collected in our WordPress section.
Frequently asked questions
Do I need an SMTP plugin if my host says email works?
Your host's mail may send, but sending is not the same as being delivered. Without SPF, DKIM and a reputable sending service, a large share of messages can land in spam. A quick test with "Show original" in Gmail will tell you where you stand.
Which port should I use for WordPress SMTP?
Use port 587 with TLS in almost every case. Port 465 with SSL also works on many services. Avoid port 25, since many hosts block it to stop spam.
Will an SMTP plugin slow down my WordPress site?
Not in any way visitors will notice. The plugin only runs when an email is sent, and API based connections usually finish in well under a second. Logging adds a small database table, which you can set to clear old entries after 30 or 90 days.
More in WordPress
WordPress
How to Limit WordPress Post Revisions and Clean Old Ones
Open the database of a gaming fan site that has been running for three years and you will often find that a third of the rows...
WordPress
How to Fix the WordPress White Screen of Death Fast
You click "Update" on a plugin, the page reloads, and your whole clan site is a blank white page.
WordPress
How to Remove Unused WordPress Plugins Without Leftovers
Your plugins page lists 38 entries, you actively use maybe 20, and nobody on the team remembers why the rest were installed.