WordPress can report “message sent” while the customer never sees mail. That usually means php mail() left from the hosting IP instead of authenticated SMTP on your custom domain. Align From with a sending-active domain, submit over TLS, and treat the plugin test as a transport check — not inbox placement.
Why the contact form “works” and nobody gets the email
Contact Form 7, WPForms, Gravity Forms, membership plugins, and WordPress core password resets all call wp_mail(). On many shared hosts that still ends in php mail() from an address like wordpress@serverhostname or a From header that does not match the sending IP.
SPF, DKIM, and DMARC then fail alignment. Gmail and Microsoft can reject or junk the message. The site owner sees a green success state because WordPress handed the message to the local MTA. Delivery is a different system.
The fix is not “another form plugin.” The fix is authenticated submission from an address on a domain you control.
What must be true before you open an SMTP plugin
- The domain is onboarded for receiving, then sending. Arawa Mail Enable Sending requires receiving first. Cloudflare is used to publish outbound DNS (DKIM and custom MAIL FROM).
- You have a real mailbox or a documented sending identity such as
[email protected], not[email protected]. - The From domain you will type into WordPress is sending-active. HTTP API sending has the same rule:
frommust be registered, allowed by the API key, and enabled for outbound mail. - You know your host’s outbound firewall. Shared hosts often block port 25 and sometimes 465. Do not assume 465 is available.
DNS specifics live on ArawaMail DNS records and connecting a Cloudflare domain. This article does not reprint MX host strings.
Pick the From address so headers align
Set WordPress and the form plugin to send From an address on the authenticated domain. Keep Reply-To on a mailbox a human reads. Do not invent alignment by forging From while still sending through php mail().
Header roles are covered in From, Reply-To, and Return-Path. Receipts and resets should remain replyable; see receipts from a real address and stop using noreply@.
Which SMTP port and encryption WordPress should use
Copy the live SMTP hostname from Domain / Connect Device in the Arawa Mail app. Documentation uses placeholders such as smtp.example.com — do not put those placeholders in production.
- Documented client pattern: SMTP port 465 with implicit SSL/TLS, username = full mailbox address, password = mailbox password.
- If the host blocks 465, try 587 with STARTTLS. That is the common shared-host fallback.
- Avoid port 25 from WordPress. Hosts and networks filter it, and it is the wrong submission port for a CMS.
Protocol detail stays in SMTP ports 25, 465, and 587 and STARTTLS vs implicit TLS. There is no first-party Arawa Mail WordPress plugin in the public docs. Use a generic SMTP plugin (WP Mail SMTP, FluentSMTP, Post SMTP, Easy WP SMTP) or call the documented HTTP Send Email API from custom code.
Configure the plugin and send a test you can diagnose
- Install one SMTP plugin. Choose “Other SMTP” / custom SMTP, not a vendor logo Arawa Mail does not list.
- Host: the hostname shown in-app for that domain. Port: 465 (TLS) or 587 (STARTTLS) based on what the host allows.
- Username: the full address. Password: that mailbox password. Do not reuse a panel password if the product created a mailbox secret.
- From email: the same domain you authenticated. From name: the brand humans expect.
- Send the plugin’s test to an address you control at Gmail and at a second provider.
Read the error, not the success toast:
- Connection timed out / could not connect. Outbound port blocked. Switch 465 ↔ 587 or ask the host to allow submission.
- TLS handshake failed. Port and encryption mismatch (implicit TLS on 465 vs STARTTLS on 587).
- 535 / authentication failed. Wrong username (must be the full address) or stale password.
- Sender rejected / not allowed to send. Domain is not sending-active, or From is a domain the mailbox cannot use.
- Test says sent, inbox empty. Transport worked; placement failed. Check spam, then authentication and content. Use inbox placement testing.
Arawa Mail plan caps still apply. WordPress does not get an unlimited SMTP pool. Forwarded copies and form floods count as mail volume.
Forms, membership resets, and WooCommerce
Point every plugin that sends mail at the same From domain:
- Contact Form 7 / Gravity Forms / WPForms notifications from
hello@customdomain. - LMS or membership password resets that currently leave from the server hostname.
- WooCommerce new-order and customer-reset mail — keep this article to SMTP setup. Store-specific deliverability is a separate checklist.
Core wp_mail() will follow the SMTP plugin once the plugin correctly wraps the mailer. If a plugin opens its own SMTP socket, configure that plugin too.
When to skip SMTP plugins and call the sending API
Use HTTP when:
- The host blocks every outbound SMTP port.
- You need message ids in your own logs rather than a plugin “sent” flag.
- Sends happen in a serverless worker or a separate app, not inside WordPress request lifecycle.
Arawa Mail documents a Resend-compatible Send Email API and a Mailgun-compatible messages path. Laravel already has a first-party quickstart; WordPress does not. A custom plugin or mu-plugin that posts JSON is acceptable. Arawa Mail outgoing webhooks, as documented today, notify you of incoming mailbox mail. They do not replace SMTP configuration for wp_mail().
For product architecture, keep inboxes and application mail on the same domain when that is the operating model: one domain for inboxes and product email.
How we analyzed this
On 17 Sep 2026 we checked Arawa Mail docs for Enable Sending (receiving first; API from must be registered, key-allowed, sending-active), Connect Device (IMAP 993 / SMTP 465 with placeholder hostnames), Send Email API, and outgoing webhooks (inbound notify URLs). We did not publish placeholder SMTP hosts. Port and TLS behavior is delegated to existing ArawaMail guides rather than restated.
FAQ
Why does WordPress say the email sent when it never arrived?
WordPress only knows that php mail() or the SMTP client accepted the message. That is not inbox placement and is often not even aligned authentication.
What is the best WordPress SMTP port?
Prefer 465 with implicit TLS when the host allows it. Use 587 with STARTTLS if 465 is blocked. Confirm with a test, not with a blog default.
Can php mail() pass DMARC on a custom domain?
Not reliably on shared hosting. The sending IP is the host’s, not your authenticated mail platform. Use authenticated submission.
Is there an official Arawa Mail WordPress plugin?
Not in the public documentation. Use generic SMTP with in-app hostnames, or the documented HTTP API from custom code.