WordPress ships with email turned on, yet on most hosting the messages never arrive: password resets vanish, contact form entries go missing, and WooCommerce receipts land in spam. This guide explains why that happens on Ultra Web Hosting and every other host, and walks you through fixing it for good with an authenticated SMTP plugin like WP Mail SMTP.
- Why WordPress Email Fails by Default
- Confirm You Actually Have This Problem
- What SMTP Is and Why It Fixes This
- Install an SMTP Plugin
- Configure SMTP Against a cPanel Mailbox
- Configure SMTP for Google Workspace or Microsoft 365
- Set the From Name and From Email Correctly
- Send a Test Email and Read the Result
- Make Sure SPF and DKIM Exist for the Domain
- Troubleshooting Common Failures
Stop Using PHP mail(), Start Using Authenticated SMTP
WordPress sends mail through PHP's built-in mail() function, which has no login and no authentication. An SMTP plugin makes WordPress log in to a real mailbox and send through it, exactly like Outlook would. That one change fixes almost every "WordPress not sending email" complaint.
- Install WP Mail SMTP, FluentSMTP, or Post SMTP
- Point it at a real mailbox you created here or at Google/Microsoft
- Make the From address match that mailbox exactly
- Confirm SPF and DKIM exist so recipients trust the mail
The From Address Must Match the Mailbox
The single most common reason SMTP "works" in testing but mail still bounces or spam-folders: the From address in WordPress does not match the mailbox you authenticated with. If you log in as [email protected] but send as [email protected], the mail server rejects it or the recipient flags it as forged. Set them to the same address in Section 07.
- Symptom: auth succeeds, test send "passes", real mail still fails
- Cause: From address differs from the authenticated mailbox
- Fix: set From Email to the exact mailbox you log in with
01. Why WordPress Email Fails by Default
Out of the box, WordPress hands every message (password resets, new user notifications, comment alerts, contact form entries, WooCommerce order emails) to the PHP mail() function on the server. That function was designed for a simpler internet and it causes several problems on modern shared hosting:
- No authentication - PHP
mail()sends without logging in to any mailbox. Receiving servers cannot verify the message came from an authorized sender, so they treat it with suspicion. - From-address mismatch - WordPress defaults to a From address like
[email protected], which frequently is not a real mailbox and does not align with the domain's mail records. That mismatch alone gets mail filtered. - No SPF or DKIM signature - mail sent this way usually is not signed with DKIM and may not match the domain's SPF policy, so Gmail, Outlook, and others quietly move it to spam or reject it outright.
- Host and destination filtering - large mail providers throttle or drop unauthenticated bulk mail from shared web servers. Your message can be technically "sent" from WordPress and still never be delivered.
The result is the classic symptom: WordPress reports no error, the plugin says the email was sent, and the recipient never sees it. The fix is to stop using mail() and send through an authenticated SMTP connection instead.
Unauthenticated
WordPress hands the message to the server's mail() function with no login. Delivery is a coin flip once SPF and DKIM enter the picture.
- No mailbox login, no authentication
- From address often does not exist
- Frequently unsigned, so it fails DKIM
- Commonly spam-foldered or rejected
Logs In Like a Real Client
WordPress connects to a real mailbox with a username and password and sends through it, the same way Outlook or your phone does. Delivery is reliable and traceable.
- Logs in to a real mailbox you control
- From address matches the authenticated account
- Mail is signed and passes SPF/DKIM
- Lands in the inbox, not the spam folder
02. Confirm You Actually Have This Problem
Before installing anything, confirm the symptom so you know the fix worked afterward. The two fastest tests use features WordPress already has.
- Trigger a password reset. Go to your login page, click Lost your password?, and enter an address you can check (a personal Gmail works well). If the reset email never arrives within a few minutes, WordPress email is broken.
- Submit a contact form. If you run Contact Form 7, WPForms, Gravity Forms, or similar, send yourself a test entry and see whether the notification lands.
- Check the spam folder. Look in Junk or Spam at the receiving end. If the mail is there rather than missing, the problem is deliverability (SPF/DKIM) rather than sending, and Section 09 is your priority.
If forms specifically are the problem but password resets work, the issue may be the form plugin's own email settings rather than WordPress core. Set up SMTP first (it helps both), then see Why Does My Contact Form Not Send Email for form-specific causes.
03. What SMTP Is and Why It Fixes This
SMTP (Simple Mail Transfer Protocol) is the standard mail servers use to hand messages to one another. Authenticated SMTP means your WordPress site logs in to a real mailbox with a username and password before sending, exactly as an email client does. That login is the missing piece.
Once WordPress authenticates to a mailbox, three things improve at once:
- The sender is verified - the mail server knows an authorized account sent the message, not an anonymous script.
- The mail gets signed - sending through a real mailbox means the message is DKIM-signed and matches SPF, which is what keeps it out of spam.
- Failures become visible - if the login is wrong or the server refuses the connection, the SMTP plugin reports a clear error instead of silently dropping the mail.
You do not need a separate email service to use SMTP. Every Ultra Web Hosting account already lets you create mailboxes in cPanel, and any one of them can be the account WordPress authenticates to. That is the simplest and cheapest setup for most sites.
04. Install an SMTP Plugin
WordPress does not do authenticated SMTP on its own; a plugin adds it. Three good options, all free for the basic sending you need here:
- WP Mail SMTP - the most widely used, with a guided setup wizard and provider presets. Good default choice.
- FluentSMTP - fully free with no paid upsell, supports multiple mailboxes and routing rules, light on resources.
- Post SMTP - strong logging and a connectivity test tool that is handy when a send fails.
The steps below use WP Mail SMTP as the example; the other two are nearly identical.
- In WordPress admin, go to Plugins > Add New.
- Search for WP Mail SMTP, click Install Now, then Activate.
- The setup wizard opens automatically. If it does not, go to WP Mail SMTP > Settings.
- Choose your mailer. For a cPanel mailbox pick Other SMTP. For Google or Microsoft pick their dedicated option (covered in Section 06).
Do not run two SMTP plugins together. They will fight over the mail hook and you will get duplicate or dropped messages. If you are switching plugins, deactivate the old one first.
05. Configure SMTP Against a cPanel Mailbox
This is the recommended path for most sites hosted with us. First create a mailbox in cPanel that WordPress will use to send. A dedicated address such as [email protected] or [email protected] keeps things tidy. See How to Create Email Accounts and Aliases if you need a hand creating it.
Then enter these settings in the Other SMTP section of the plugin:
- SMTP Host:
mail.yourdomain.com(replace with your actual domain). - Encryption: choose SSL and set Port to
465, or choose TLS and set Port to587. Either works; SSL on 465 is a safe default. - Authentication: turn it on.
- SMTP Username: the full mailbox address, for example
[email protected]. Not just the part before the @. - SMTP Password: the password you set for that mailbox in cPanel.
- Save. Leave Auto TLS enabled if the plugin offers it.
Whatever mailbox you authenticate with here, the From Email in Section 07 has to be that same address. If you log in as [email protected] the From Email must also be [email protected]. A mismatch is the number one reason SMTP appears configured but mail still fails or spam-folders.
If the connection is refused on 465, try 587 with TLS, and vice versa. Some networks and firewalls block one port but not the other. If both are refused, the host value is usually wrong; confirm it is mail.yourdomain.com and that the domain resolves to our server.
06. Configure SMTP for Google Workspace or Microsoft 365
If your mail lives at Google Workspace or Microsoft 365 rather than in a cPanel mailbox, point WordPress at their servers instead. Both providers have moved away from plain password logins, so you use either an app password or their API.
- Google Workspace - the simplest route is the plugin's built-in Google mailer, which connects through Google's API and does not need a password stored in WordPress. If you prefer SMTP, host
smtp.gmail.com, port465(SSL) or587(TLS), username the full Google address, and an app password generated in the Google account security settings. Regular account passwords will not work once 2-step verification is on. - Microsoft 365 - use the plugin's Microsoft/Outlook mailer (Graph API) where available, or SMTP with host
smtp.office365.com, port587(TLS), the full mailbox address, and an app password. Note that Microsoft has been disabling basic SMTP auth on many tenants, so the API mailer is the more reliable choice going forward.
If you set up Microsoft 365 or Google Workspace on your domain, your MX and authentication records already point at them, which means their SMTP mail passes SPF and DKIM automatically. That is one less thing to configure. For the Microsoft side of that setup, see our Microsoft 365 email guide in this same WordPress and Email category.
07. Set the From Name and From Email Correctly
The From settings are where most "it still does not work" cases hide. Every SMTP plugin has a From Name and From Email field, usually at the top of its settings.
- From Email: set this to the exact mailbox you authenticated with in Section 05 or 06. If you log in as
[email protected], this field must be[email protected]. - From Name: set this to your site or business name, for example
Your Business Name. This is what recipients see in their inbox. - Force From Email: enable this so plugins that try to set their own From address (some contact forms do) are overridden and everything sends from the authenticated mailbox.
- Save.
Aligning the From address with the authenticated mailbox is what lets SPF and DKIM validate. When the From domain, the sending server, and the DKIM signature all agree, receiving servers trust the mail. For the full picture on how those records work together, see Understanding Email Authentication: SPF, DKIM, and DMARC, and the focused guides on SPF and DKIM.
08. Send a Test Email and Read the Result
Every SMTP plugin includes a test-send tool. Use it before you trust the site with real mail.
- In WP Mail SMTP, go to Settings > Email Test (Post SMTP and FluentSMTP have equivalent tabs).
- Enter an address you can check, ideally one at Gmail or Outlook so you see how a major provider treats it.
- Click Send Email and read the result carefully.
Interpreting what you get back:
- Success and it arrives in the inbox - you are done. Trigger a real password reset to double-confirm.
- Success but it lands in spam - sending works; deliverability does not. Go to Section 09 and confirm SPF and DKIM.
- Failure with an error - read the error text. The plugin usually names the cause (connection refused, authentication failed, and so on). Section 10 maps the common ones to fixes.
Turn on email logging in the plugin while you are testing. A log of what WordPress tried to send, and whether each attempt succeeded, is far easier to debug than "my mail is missing." You can turn logging off once everything is stable.
09. Make Sure SPF and DKIM Exist for the Domain
Authenticated SMTP gets WordPress to hand off the mail cleanly, but the receiving server still decides whether to trust it. That decision rides on two DNS records for your domain: SPF and DKIM. Without them, even correctly authenticated mail can be spam-foldered.
- SPF - a TXT record listing which servers may send mail for your domain. If WordPress sends through your cPanel mailbox, our mail server must be in the SPF record. We publish a default SPF record for domains on our nameservers; confirm it exists.
- DKIM - a cryptographic signature that proves the mail was not altered and really came from your domain. cPanel can enable DKIM for your domain in a couple of clicks.
- In cPanel, open Email Deliverability (under the Email section).
- Find your domain. cPanel shows the status of SPF and DKIM and offers a Repair button if either is missing or wrong.
- Click Repair if prompted. On our nameservers (
ns1.ultranameservers.com,ns2.ultranameservers.com,ns3.ultranameservers.com) this publishes the records for you. - If your DNS is hosted elsewhere (Cloudflare, for example), copy the SPF and DKIM values cPanel shows and add them at that provider instead.
Confirm the records resolved with our free SPF Lookup and DKIM Lookup tools. If your mail keeps landing in spam even with both records in place, our companion guide "Why Is My Email Going to Spam and How to Fix It" covers the deeper deliverability causes.
10. Troubleshooting Common Failures
Connection refused or connection timed out. The port or host is wrong, or a firewall is blocking it. Try switching between port 465 (SSL) and port 587 (TLS). Confirm the host is mail.yourdomain.com. If both ports fail, the host value or DNS is the issue.
Authentication failed / invalid credentials. The username or password is wrong. The username must be the full mailbox address ([email protected], not wordpress), and the password must match what you set in cPanel. Reset the mailbox password in cPanel and paste it in again if unsure.
Test send succeeds but real mail still lands in spam. Sending is fine; deliverability is not. Confirm SPF and DKIM exist (Section 09) and that the From address matches the authenticated mailbox (Section 07). See the Email Troubleshooting Guide for the full checklist.
Test send works but contact form mail does not. The form plugin is overriding the From address or using its own mailer. Enable Force From Email in the SMTP plugin, and check the form plugin's email settings. See Why Does My Contact Form Not Send Email.
Mail works but the From address is still [email protected]. A plugin is setting the From address before the SMTP plugin can. Turn on Force From Email so your configured address wins.
Google or Microsoft rejects the login. Basic password auth is disabled. Generate an app password (Google) or switch to the API mailer (Microsoft Graph or Google API) in the plugin. For adding a Microsoft or Google account by hand in a desktop client, see How to Set Up Email in Microsoft Outlook.
Want Us to Sort the Mail Out?
If WordPress email is still not sending after these steps, open a ticket. Send us the plugin's error message and the mailbox you are trying to send through, and we will check the SMTP settings, SPF, DKIM, and mail logs from our side.
Open a Support TicketQuick Recap: WordPress Email in Six Steps
If you only do six things from this guide, do these:
- Confirm the problem with a password reset or a contact form test, and check the spam folder.
- Install an SMTP plugin (WP Mail SMTP, FluentSMTP, or Post SMTP) and pick the Other SMTP mailer for a cPanel mailbox.
- Enter the mailbox settings: host
mail.yourdomain.com, port 465 (SSL) or 587 (TLS), full address as the username, and its password. - Match the From Email to the mailbox and enable Force From Email so nothing overrides it.
- Send a test email and read the result: inbox means done, spam means fix SPF/DKIM, error means read the message.
- Confirm SPF and DKIM exist in cPanel Email Deliverability so authenticated mail passes at the recipient.
Last updated July 2026 · Browse all WordPress articles
