Default (PHP mail) — why to avoid it
On this page
What the Default (none) mailer does, why its mail often lands in spam or vanishes, and the few cases where it is acceptable.
This article explains the Default (none) mailer: what it is, why it causes so many delivery problems, and when it is fine to leave it on. It is for anyone who has just installed CRM-NG SMTP, or who sees the message that the default mailer "won't improve email deliverability".
What it is
When Mailer is set to Default (none), CRM-NG SMTP does not send anything itself. WordPress falls back to PHP's built-in mail() function, which hands each message to whatever mail program your web server has, usually a local sendmail or Postfix. That server then tries to deliver the message straight to the recipient.
CRM-NG SMTP shows a notice while this mailer is selected: "You currently have the Default (none) mailer selected, which won't improve email deliverability. Please select any other email provider and configure it." Site Health also reports that mailer setup is incomplete.
Why it lands in spam
Modern inboxes such as Gmail, Outlook and Yahoo check every message for proof that it really comes from the domain in the From address. Mail sent through PHP's mail() usually fails these checks.
- No authentication. The web server is not listed in your domain's SPF record, and it does not sign messages with your domain's DKIM key. Without these, the message cannot pass DMARC.
- Shared, unknown servers. On shared hosting, hundreds of sites send from the same server. If any of them sends spam, the server's reputation suffers and your mail is judged with it.
- Mismatched addresses. The technical sender (the envelope address) is often something like
user@server123.yourhost.com, which does not match your From address. - No feedback. When a message is rejected, PHP usually still reports success. WordPress cannot tell you it failed, so problems go unnoticed until a customer complains.
- Blocked by hosts. Many hosts limit or switch off
mail()entirely to stop abuse, so nothing leaves the server at all.
Since early 2024, the largest inbox providers require authentication from bulk senders, and they increasingly apply the same checks to everyone. Unauthenticated mail is more likely than ever to be filtered or refused. See Emails landing in spam.
When it is acceptable
- A local or development site where you do not need mail to reach real inboxes, often paired with a mail-catching tool.
- A managed host that relays
mail()properly. Some hosts route PHP mail through an authenticated relay that they include in your SPF record and sign with DKIM. Ask your host, then send a test and check the headers. - Temporarily, while you set up a proper mailer.
Even then, you can stop all outgoing mail on a staging site with Do Not Send on the Misc tab. See Miscellaneous settings.
Switch to a real mailer
- Pick a service
Choose a mailer that fits your site. Choosing a mail service compares them.
- Open the settings
In WordPress, open CRM-NG SMTP → Settings → General and pick the service under Mailer.
- Follow its guide
Each mailer has its own guide with the provider steps and the fields to fill in.
- Authenticate your domain
Add the SPF, DKIM and DMARC records your service gives you. See Adding DNS records.
- Save
Press Save Settings.
Send a test email
Open CRM-NG SMTP → Tools → Email Test, enter your address in Send To, and press Send Email. With the default mailer, a "success" message only means PHP accepted the message, not that it was delivered. Check your inbox and spam folder, and look at the message headers for SPF, DKIM and DMARC results. See Sending a test email.
Troubleshooting
- Mail never arrives and no error is shown: your host may block
mail(). Switch to a real mailer. - Mail arrives in spam: Emails landing in spam
- The test page warns about SPF or DMARC: Adding DNS records
- General problems: Troubleshooting email delivery
