← Blog

July 18, 2026 · 6 min read

Magento Order Confirmation Emails Not Sending? Here's How to Fix It

The order goes through, payment clears, and the customer never gets a confirmation email. It's one of the most common Magento support tickets, and almost never a bug in Magento itself — it's the hosting server's mail transport.

Why this happens

By default, Magento sends email through PHP's mail() function (or a local sendmail binary), which hands the message to whatever mail service is configured on the server — no authentication, no delivery guarantee. Most receiving mail servers now reject or silently drop mail from an unauthenticated source, or the sending server itself rate-limits or blocks outbound mail entirely. The order still places successfully because sending the email is a side effect, not a required step in checkout — so nothing in the checkout flow ever surfaces the failure.

How to confirm this is actually your problem

  • Check var/log/exception.log and var/log/system.log for mail-related errors around the time of a missed order.
  • Ask your host directly whether outbound port 25/587 is open and whether PHP mail() is rate-limited or disabled — many shared hosts cap this aggressively or block it outright.
  • Try Magento's admin Configuration > Advanced > System > Mail Sending Settings disable/test toggle — if it reports success but the email never arrives, the message left your server and was rejected or spam-filtered on the receiving end.

The fix: real SMTP instead of the server's mail() function

Routing outbound mail through an authenticated SMTP provider — Gmail, Outlook/Office 365, SendGrid, Mailgun, Zoho, or Amazon SES — fixes this because the message is now sent with real credentials a receiving server can verify, instead of an anonymous local handoff. TVT Commerce's SMTP Config module does exactly this and nothing else: it's free, MIT-licensed, and overrides Magento's mail transport for every email the platform sends — order confirmations, password resets, invoices, admin notifications.

Setting it up

  1. 1Install the module — see Composer vs. manual install for both methods.
  2. 2Go to Stores > Configuration > TVTCommerce > SMTP Config, pick your provider from the dropdown — Host, Port, and Encryption auto-fill.
  3. 3Enter your username and password or API key, and turn on Enable SMTP Sending.
  4. 4Save, then use the Send Test Email button at the bottom of the same section — it always tests against the saved configuration.

Unlike Magento's default transport, which reports a generic "Unable to send mail" regardless of cause, SMTP Config surfaces the real underlying error — wrong host, wrong port, bad credentials, TLS failure — directly in the test result, so you can actually diagnose what's wrong instead of guessing.

Provider-specific gotchas

  • SendGrid: the Username field is literally the string apikey, not an email address — your real API key goes in Password.
  • Amazon SES: defaults to the us-east-1 region — edit the Host field manually if your SES setup is in a different region.
  • Gmail: requires an App Password (needs 2-Step Verification enabled) — your normal account password will be rejected.

Works whether you're on Laminas or Symfony Mailer

Magento 2.4.8 replaced Laminas Mail with Symfony Mailer as its own default transport. SMTP Config detects at runtime which one is actually installed and sends through whichever is present, so the same module works unmodified across the whole 2.4.x line.

Still not sure which email failed, or why?

If you'd rather ask than dig through logs, AI Copilot can help diagnose delivery issues conversationally, alongside answering questions and — with your confirmation — handling changes across catalog, CMS, and customers.

Get real email delivery working — free.

Download SMTP Config