How to Send Email in WordPress (and How WordPress Sends It by Default)
WordPress already sends email with no plugin, through your web host, from an address you never chose. Here’s what it does, a free test to see whether yours arrives, and how to send it properly.
Your contact form says “sent” and nothing shows up. Or a password reset never reached you. Or the site is new, and you want to know how to send email in WordPress before anyone depends on it.
So you went looking, and found code samples, port numbers and a menu of routes to choose from. You don’t want to learn how mail servers work. You want your site’s email to arrive, ideally without one more plugin to look after.
It isn’t your fault, and it’s fixable. Here’s what WordPress does with an email right now, a free test that shows whether yours is getting through, and the way we’d send it properly.
How does WordPress send email by default?
WordPress sends email by itself, with nothing extra installed. Every email is built by one function, wp_mail(). Unless a plugin changes that, the function hands the message to PHP’s built-in mail function, which passes it to your web server’s own mail program.
In other words, your web host does the sending.
A fresh WordPress site already sends several emails this way:
- the password reset link
- login details for a new user, and a notice to the site’s admin address about the new account
- a confirmation when you change the site’s admin email address
- a “Please moderate” notice when a comment is held for approval
Email like this, sent because something happened on your site, is transactional email, which is a different thing from a newsletter. Plugins that send through WordPress use the same route. That’s why a contact form’s notifications can go missing while the form itself works fine.
Can you send email in WordPress without a plugin?
Yes. WordPress sends email without any plugin, and it’s doing that on your site today.
If you were hoping for a setting that changes how WordPress sends it, there isn’t one. Sending it a better way means adding one plugin to your site, and we’ll get to that below.
That no-plugin default is also where email often goes missing. Nothing is wrong with your WordPress: the weak spot is the last leg of the trip, where your web server is asked to do a mail server’s job. The good news is that you can see how yours is doing for free.
Check if WordPress can send email with a free test
WordPress has no built-in “send a test email” button, but it does have a password reset form, and that sends a real email through the default route. Send one to yourself. You don’t need to install anything.
- Log out of your site, or open your login screen in a private browser window.
- Click Lost your password?
- On the Lost Password screen, type your own username or email address in the Username or Email Address field. Use an account whose email address you can read.
- Click Get New Password.
- Open your mailbox. Look in the inbox and the spam folder for a message from “WordPress” with the subject [Your Site Title] Password Reset.
If you see “Error: There is no account with that username or email address.”, the test hasn’t run yet. Type the address that’s on your user profile and try again.
Here’s how to read what happens next:
| What you see | What it means | What to do |
|---|---|---|
| “Check your email for the confirmation link, then visit the login page.” and the message is in your mailbox | The default route worked for that mailbox today. | Keep this test handy for the day an email goes missing. |
| The same “Check your email” screen, and no message in your inbox or spam folder | WordPress handed the email to your server, and it was never delivered or got filtered on the way. WordPress can’t tell which. | Change how your site sends email. Skip down to how to send it properly. |
| “Error: The email could not be sent. Your site may not be correctly configured to send emails.” | WordPress couldn’t hand the email to your server at all. | Same fix: change how your site sends email. |
“Check your email” doesn’t mean the email arrived
The middle row is the tricky one, because the screen looks like success. WordPress shows “Check your email” as soon as the server takes the message off its hands. That’s all it knows.
WordPress says so itself. Its reference page for the mail function reads: “A true return value does not automatically mean that the user received the email successfully.”
We tested it by pointing a test site at a mail server that accepted every message and threw it away. WordPress showed the same cheerful “Check your email” screen, and the email reached no mailbox. So trust your mailbox, not the screen.
Know which address your site sends from
By default, your site’s email comes from a sender named “WordPress” at wordpress@ plus your site’s domain. A site at www.example.com sends from wordpress@example.com. That’s the sender to look for when you run the test above, and the name to search your mailbox for when an email seems lost.
That sender is not the address under Settings > General. The Administration Email Address field there is where WordPress sends its notices to you, such as new user registrations and comments waiting for approval.
Open it now and make sure it’s an inbox somebody reads. If you need to change it, wait until your test email arrives. WordPress emails a confirmation to the new address, and that confirmation takes the same default route as the test did.
Why email sent the default way often never arrives
Two things work against email sent straight from a web server: the host it leaves from, and the mailbox it’s going to.
Your web host may block or limit it
Many hosts block or limit the email a website can send through them, and for sensible reasons. For example, DigitalOcean’s documentation says the ports a server sends email over (25, 465 and 587) are blocked on its cloud servers “to prevent spam and other abuses on our platform.”
WP Engine’s documentation says it sets a hard limit on the emails a site can send in an hour to keep its servers stable. Your host may have rules of its own like these, and your site’s email has to live inside them.
The default sender can be one of the reasons. The mailbox behind wordpress@ your domain may not exist, and a comment in WordPress’s own code says:
Some hosts will block outgoing mail from this address if it doesn’t exist, but there’s no easy alternative.
Gmail and Yahoo expect proof the email is yours
Since February 2024, Google’s email sender guidelines have required everyone who sends to Gmail accounts to set up SPF or DKIM for their sending domain. Yahoo’s sender best practices ask for SPF or DKIM at a minimum too.
SPF and DKIM are DNS records that prove an email really came from your domain, a bit like a signature on a check. Email sent straight from a web server often doesn’t carry that proof.
How to send email in WordPress properly (one plugin, no code)
To send WordPress email properly, stop sending it from your web server and send it through a service built for email.
You can assemble that route yourself. Here’s what it takes:
- a sending provider to choose, and an account with it
- that provider’s credentials and mail settings, copied into a plugin or code on your site
- DNS records added at your domain’s DNS host
This is the problem we built SendWP for, so it’s what we’d suggest. With SendWP there’s no provider to choose, and no credentials or mail settings to copy into WordPress. You install one plugin, create a SendWP account, and connect the two by authorizing the connection.
Once your site is connected, every email WordPress sends (form notifications, order receipts, password resets) goes out through SendWP instead of your web host. Your forms, subjects and wording stay as they are, because WordPress still writes every email. SendWP keeps email logs for 30 days.
The DNS records are yours to add either way, and we’ll point you to them after the steps. SendWP does add one plugin, and it’s a paid service, so check SendWP’s pricing before you start.
Connect your site to SendWP
You’ll need an administrator login for your site and the SendWP plugin from wordpress.org. Until the connection is finished, your site keeps sending email the old way.
- In your WordPress dashboard, go to Plugins > Add Plugin.
- Search for “SendWP”, click Install Now, then click Activate.
- Look for the notice at the top of your dashboard: “Attention: The SendWP plugin is installed, but the service is currently disabled or disconnected on this site.” Click Connect or register in that notice.
- You’ll land on the Tools > SendWP screen, which says “Your site is currently not connected to sendwp.com.” Click the Connect to SendWP button.
- SendWP opens a page headed Create your account. If you’re new, enter your email address and a password and click Proceed to Checkout. If you already have an account, click Already registered? and sign in instead.
- Choose a plan. Until a plan is active, SendWP lists your site as No Plan and the connection isn’t finished.
- Back in your dashboard, open Tools > SendWP. Once you’re connected, the screen should read “SendWP is currently enabled and sending email.”
That’s the connection done. If you lose the notice along the way, Tools > SendWP in your dashboard menu is the same screen. For the full walkthrough, including installing the plugin from a file, follow SendWP’s Getting Started guide.
One job is left: the proof Gmail and Yahoo look for. SPF and DKIM are still DNS records you add at your DNS host, and SendWP gives you the values.
In your SendWP account, open Domains, choose your site, then Deliverability. That screen lists your DKIM Record and SPF Record, with a Copy button beside each value. When you’re ready, add SendWP’s SPF record and add SendWP’s DKIM record.
Run the same test again
Go back to your login screen, click Lost your password? and send yourself another reset email. You’ll see the same “Check your email” screen as before, and like we said above, the screen proves nothing.
The proof is in your mailbox: look for [Your Site Title] Password Reset in your inbox and your spam folder. You can also see it from SendWP’s side. In your SendWP account, open Domains, choose your site, then Emails, where the Email Logs screen lists each email with its status, subject, sender, recipient and date.
If it still doesn’t arrive, ask SendWP’s support for help. The plugin’s own screen points you to the same place.
Test your site’s email today, then send it properly
You came here asking how to send email in WordPress, and it turns out your site was trying to send it all along, through your web host, from an address you never chose. Now you know what it does, how to test it, which sender to look for, and which success screen not to believe.
Run the password reset test first: it’s free. If the email doesn’t show up, connect SendWP. Your password resets, form notifications and order receipts go out through SendWP instead of your web host, each one is listed in your SendWP email log, and SendWP gives you the SPF and DKIM records for your domain.
We believe it’s the best way to get your WordPress email sent properly. It’s a paid service, and you can get started for $1 your first month.