WordPress SMTP Setup: 6 Simple Steps, No Extra Plugin

In short:
- WordPress SMTP means your site logs in to a real mail server to send email, instead of handing messages to the web server’s basic mail function.
- It fixes most “WordPress emails go to spam” and “forms stopped sending” problems, because mail then carries your email provider’s reputation and authentication.
- You need four details from your email provider: the server, the port, the encryption type and a login.
- Most sites add an SMTP plugin for this. With FillKite, WordPress SMTP is built in under Settings → Email sending, so no extra plugin is needed.
- Always send a test, make the From address match the login, and keep the password out of the database if you can.
WordPress SMTP is the single most effective fix for unreliable WordPress email. Password resets that never arrive, order receipts in spam, contact form notifications that vanish: in most cases the cause is the same, and so is the fix.
This guide explains what WordPress SMTP is, why the default way WordPress sends email fails, how to set up SMTP in six simple steps without an extra plugin, the settings for common providers, and how to test that it works.
What is WordPress SMTP?
SMTP (Simple Mail Transfer Protocol) is the standard way email servers pass messages to each other. When you send an email from your phone, your mail app logs in to your provider’s SMTP server with your username and password, and hands the message over.
WordPress SMTP means doing the same thing from your website. Instead of relying on the web server to send mail, WordPress logs in to a real mail server, such as Google Workspace, Microsoft 365, your host’s mail service or a sending service, and sends through it.
Why WordPress email fails without SMTP
By default, WordPress sends email with PHP’s mail() function. That hands the message to the web server, which sends it on with no login and, often, no connection to your domain’s email setup. Three things go wrong:
- No authentication. The web server is usually not listed in your domain’s SPF record and does not sign with your DKIM key, so receiving servers distrust the mail.
- Shared reputation. On shared hosting, the same server sends mail for many sites. If one of them sends spam, everyone’s mail suffers.
- Silent failure. Some hosts limit or disable
mail(). WordPress thinks the email was sent, and nothing tells you it was not.
WordPress SMTP solves all three at once: the mail goes out with a login, through a server your domain already authorises, and a failed connection returns an error you can see.
How WordPress sends email behind the scenes
Every email WordPress sends, whether from core, a theme or a plugin, goes through one function called wp_mail(). It builds the message and hands it to a mailer. By default that mailer uses PHP’s mail(), which passes the message to the web server.
That single route is good news. It means one change fixes every email at once: when an SMTP setting takes over wp_mail(), password resets, new-user emails, comment notices, shop receipts and form notifications all go out through your mail server. You do not need to configure each plugin separately.
| Sent by | Goes through SMTP once it is on? | |
|---|---|---|
| Password reset and new user | WordPress core | Yes |
| Comment notifications | WordPress core | Yes |
| Form notifications and auto-replies | Your form plugin | Yes |
| Order receipts | WooCommerce | Yes |
| Newsletters | Your newsletter service | No, they are sent by that service |
What you need before you start
| Setting | What it is | Where to find it |
|---|---|---|
| Server (host) | The address of the mail server, such as smtp.example.com |
Your email provider’s help pages |
| Port | Usually 587 (TLS) or 465 (SSL) | Same place |
| Encryption | TLS for port 587, SSL for port 465 | Same place |
| Username | Usually the full email address | The mailbox you send from |
| Password | The mailbox password, or an app password | Your provider’s security settings |
Use a real mailbox on your own domain, such as [email protected]. That address will be the sender of every email your site sends.
WordPress SMTP settings for common providers
Providers change their settings from time to time, so confirm with their current documentation. As a starting point:
| Provider | Server | Port and encryption | Note |
|---|---|---|---|
| Google Workspace / Gmail | smtp.gmail.com |
587, TLS | Needs an app password with 2-step verification on |
| Microsoft 365 | smtp.office365.com |
587, TLS | SMTP authentication must be enabled for the mailbox |
| Zoho Mail | smtp.zoho.com |
465 SSL or 587 TLS | Region-specific servers exist, such as smtp.zoho.eu |
| Hostinger email | smtp.hostinger.com |
465, SSL | From address must match the login |
| Brevo | smtp-relay.brevo.com |
587, TLS | Uses an SMTP key, not your account password |
| Amazon SES | email-smtp.<region>.amazonaws.com |
587, TLS | Uses SMTP credentials created in SES |
Which provider should you use?
For most small sites, the best WordPress SMTP server is the one you already pay for: the mailbox provider behind your business email. Your domain’s records already authorise it, you already have a login, and replies land in an inbox you read.
- You use Google Workspace or Microsoft 365: send through it with an app password or authenticated SMTP. Simple and reliable for normal volumes.
- Your email is with your host: use the host’s mail server, and make sure the From address matches the login.
- You send many emails a day, such as a busy shop: a sending service like Brevo, Mailgun or Amazon SES handles volume better and gives delivery reports.
- You have no business email yet: set one up on your domain first. Sending site email from a free personal address causes more problems than it solves.
Whichever you pick, WordPress SMTP only works well when the domain’s SPF, DKIM and DMARC records include that provider.
How to set up WordPress SMTP in 6 simple steps
1. Choose the mailbox to send from
Pick a real address on your domain that someone can read replies to. Avoid noreply@: customers reply to form notifications and receipts more often than you think.
2. Collect the SMTP details
Look up the server, port and encryption for your provider, and create an app password or SMTP key if your provider requires one.
3. Enter them in WordPress
In FillKite, go to FillKite → Settings → Email sending. Fill in the server, port, encryption, username and password. The password is stored encrypted. For extra safety, you can put it in wp-config.php instead with define( 'FILLKITE_SMTP_PASSWORD', '…' );, so it never sits in the database.
4. Turn it on and send a test
Switch on Send email through this SMTP server and send a test email. FillKite shows the mail server’s own answer, so a wrong password, a blocked port or a refused sender tells you exactly what to fix.
5. Match the From address
Under Settings → Email, set the From name and From email. Many providers refuse to send from an address other than the one you logged in with, often with an error like “sender address not owned by user”. Make them the same.
6. Check the result in a received email
Send a real form entry to a Gmail address, open the message, and choose Show original. You want to see SPF, DKIM and DMARC all passing. If they do not, the records for your domain need attention; our guide to SPF DKIM DMARC explains each one.
Do you need an SMTP plugin?
Most WordPress sites add a dedicated SMTP plugin, and many are good. But if your main reason for WordPress SMTP is reliable form email, a second plugin is one more thing to update and configure. FillKite includes WordPress SMTP, and once it is on, it sends every email your site sends, not only form emails: password resets, comment notices and shop receipts too.
If you already use an SMTP plugin that works, keep it and leave FillKite’s Email sending off. Running two SMTP tools at once causes conflicts, because both try to take over WordPress’s mail function. Some form plugins have no SMTP sender of their own, Gravity Forms among them; our Gravity Forms alternative page lists what else differs.
After moving host or domain
Moving a site to a new host is a common moment for email to break. The new server may block ports the old one allowed, and if you also changed where your domain’s email is hosted, the old server details stop working overnight. After any move, send a test email first, before anything else. If you changed email providers, update the server, login and DNS records together, then test again from a phone the next morning.
SMTP or a sending service API?
Sending services such as Brevo, Mailgun, SendGrid and Amazon SES offer two ways in: SMTP and their own web API. Both deliver mail. SMTP works with any tool that speaks SMTP, including FillKite, and needs no special integration. An API can be slightly faster and avoids blocked SMTP ports, but needs a plugin built for that service.
For a typical small business site sending form notifications and receipts, WordPress SMTP through your normal mailbox provider is simple and reliable. Consider a sending service when you send larger volumes, such as a busy shop or membership site.
Troubleshooting, step by step
When a test email fails, work through these checks in order. Each one rules out a common cause:
- Read the error. The mail server’s answer usually names the problem: authentication, connection or sender.
- Check the login. Log in to the same mailbox in a browser with the same username and password. If that fails, the password is wrong.
- Check the port. If the connection times out, the host may block the port. Switch between 587 and 465, or ask your host which outgoing ports are open.
- Check the encryption. TLS belongs with 587, SSL with 465. A mismatch fails to connect.
- Check the From address. Make it the same as the login.
- Check for other plugins. Another plugin that changes how WordPress sends mail can override the setting.
Once the test passes, send a real email to an outside address and read its headers, because a successful connection does not guarantee inbox delivery.
Staging sites and local copies
A staging or local copy of your site has the same settings as the live one, including SMTP. That means a test order or a test form on staging can send real emails to real customers. Before you copy a live site elsewhere, plan how email will behave there.
The safest approach is to turn SMTP off on staging, or point it at a test inbox service. Many local development tools catch outgoing mail automatically, so nothing leaves your computer. Check before you test anything that sends email.
Transactional and marketing email are different jobs
The emails your site sends through SMTP are transactional: one message, to one person, because of something they did. Newsletters and campaigns are marketing email, sent to many people at once. Mixing the two causes problems.
Send newsletters through a dedicated service such as Mailchimp or Brevo, which handles unsubscribes, bounces and sending limits. Keep your mailbox provider’s SMTP for the site’s own messages. Mailbox providers set daily sending limits, and a newsletter through your website’s SMTP can hit them, blocking your form notifications for the rest of the day.
Keep the SMTP password safe
An SMTP password lets anyone who has it send mail as you, so treat it carefully:
- Use an app password or SMTP key where your provider offers one, not your main mailbox password.
- Store it encrypted, or in
wp-config.phpoutside the database. - Limit who can see WordPress settings with user roles.
- Change it if someone with admin access leaves.
Where WordPress SMTP goes wrong
| Symptom | Likely cause | Fix |
|---|---|---|
| Authentication failed | Wrong password, or an app password is required | Create an app password or SMTP key |
| Connection timed out | Host blocks the port | Try the other port (465 or 587), or ask your host |
| Sender not owned by user | From address differs from the login | Make them the same |
| Test works, real email goes to spam | DNS records missing | Add SPF, DKIM and DMARC |
| Emails sent twice or not at all | Two SMTP plugins fighting | Use only one |
| Worked for months, then stopped | Password changed or expired | Update it and set up a daily test |
Keep it working
WordPress SMTP tends to break quietly: a changed password, an expired app password, a provider policy change. Two habits catch it early. FillKite can send one short test email a day through the same route as form notifications and warn you in WordPress if it fails. And every form entry is saved before any email is sent, with failed notifications retried after 5 minutes, 30 minutes and 2 hours, so a broken connection never loses a lead.

If emails still do not arrive after SMTP is set up, work through our guide to fixing a form not sending email. And if the problem is too much email rather than too little, see how to stop WordPress form spam.
A WordPress SMTP checklist
- A real mailbox on your own domain is the sender.
- Server, port and encryption match your provider’s current settings.
- An app password or SMTP key is used where available.
- The password is encrypted or kept in wp-config.php.
- The From address is the same as the SMTP login.
- A test email succeeds, and a real email shows SPF, DKIM and DMARC passing.
- Only one tool controls how WordPress sends mail.
- A daily test email or a regular check catches problems early.
Tick every line once, and WordPress SMTP becomes one of those settings you never think about again.
Frequently asked questions
Is WordPress SMTP free?
Setting it up is free. You use the mail server that comes with your email account. Sending services may charge above a free monthly allowance.
Which port should I use for WordPress SMTP?
Use 587 with TLS, or 465 with SSL, whichever your provider recommends. Avoid port 25, which many hosts block.
Does WordPress SMTP work on shared hosting?
Usually, yes. If the connection times out, the host may block outgoing SMTP ports. Try the other port, or ask your host which one is open.
Can I use my Gmail address for WordPress SMTP?
You can, with an app password, but a mailbox on your own domain is better. Mail from a Gmail address sent by your website can fail DMARC checks and look less professional.
Can I use WordPress SMTP with WooCommerce?
Yes. WooCommerce sends its emails through WordPress, so once WordPress SMTP is on, order confirmations and receipts go through your mail server too. For a busy shop, consider a sending service for higher daily limits.
Does SMTP slow my site down?
Only the page that sends the email waits for the mail server, usually for a second or less. Visitors browsing your site are not affected. FillKite also saves each entry before sending, so the form result is never lost if the server is slow.
Will WordPress SMTP fix emails going to spam?
It fixes the most common cause. For the rest, add SPF, DKIM and DMARC records, use a real From address and keep messages short and expected.
WordPress SMTP, built in. FillKite sends every site email through your mail server, stores the password encrypted, tests the connection and retries failed notifications. Read about notifications and email, see every feature, or install FillKite free from WordPress.org.