Merchant Guide

How to Send Reliable Magento 2 Emails (SMTP, SPF, DKIM, DMARC, and What Actually Matters)

Reliable Magento emails editorial hero

Overview

Magento sends a lot of email:

  • Order confirmations
  • Invoice and shipment emails
  • Password resets
  • Newsletter and marketing
  • Admin notifications

If those emails don't arrive, your business doesn't really work.

Email deliverability isn't a Magento problem. It's a domain reputation, authentication, and sending infrastructure problem - and Magento sits in the middle of it.

The key point: Magento can send. Whether the message lands in the inbox is decided by SPF, DKIM, DMARC, and the IP it was sent from.

This guide explains how to send Magento 2 email reliably in 2026.


Reliable Magento emails candid lifestyle scene

Why Magento Emails Fail

The most common causes, in order:

1. PHP mail() Sending Through the Wrong Server

Out of the box, Magento uses PHP's mail() function.

That sends from your web server's IP, which is almost never authorised to send mail for your domain.

Result: Gmail and Outlook drop those messages or send them to spam.


2. Missing SPF / DKIM / DMARC

Inbox providers in 2026 strongly prefer authenticated email.

Without SPF, DKIM, and DMARC:

  • Bulk senders are filtered aggressively
  • Reputation never builds
  • Even legitimate emails are marked spam

Gmail and Yahoo now require DMARC for any bulk sending.


3. Sender Address From a Free Provider

Sending order confirmations from yourshop@gmail.com looks suspicious to spam filters and to customers.

Always send from your own domain.


4. Cron Not Running the Email Queue

Magento queues most transactional emails.

If cron isn't running, queued emails never go out.


The Reliable Magento Email Stack

A working setup has four layers:

Layer 1 - A Real SMTP Provider

Use a transactional email service:

  • Postmark
  • SendGrid
  • Mailgun
  • Amazon SES
  • Brevo (Sendinblue)

These services:

  • Maintain warm IP pools
  • Handle bounce processing
  • Provide signed SPF and DKIM records
  • Give you delivery analytics

Layer 2 - SMTP Configured in Magento

Magento 2 supports SMTP natively as of 2.4.5-p1. Older versions need a third-party SMTP module (Mageplaza, Mageworx, etc.).

Stores > Configuration > Advanced > System > Mail Sending Settings

Set:

  • Transport = SMTP
  • Host (from your provider)
  • Port (typically 587 for STARTTLS, or 465 for SSL)
  • Auth = Login
  • Username (from your provider)
  • Password (from your provider)
  • SSL = TLS

Test by placing a real order.


Layer 3 - Authentication Records (DNS)

Add three DNS records on the sending domain.

SPF

Authorises specific servers to send mail for your domain.

Example for SendGrid:

v=spf1 include:sendgrid.net ~all

You can only have one SPF record. Combine includes if you use multiple providers.


DKIM

Cryptographically signs each message.

Your provider gives you a CNAME (or TXT) to add. Example for Mailgun:

mail._domainkey.yourdomain.com  CNAME  mail._domainkey.mailgun.org

DMARC

Tells inbox providers what to do with mail that fails SPF or DKIM.

Start with a monitoring policy:

_dmarc.yourdomain.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"

After two weeks of clean reports, tighten to p=quarantine, then p=reject.


Layer 4 - Real Sender Addresses

Stores > Configuration > General > Store Email Addresses

Replace every default address with a monitored mailbox on your domain:

  • orders@yourdomain.com
  • support@yourdomain.com
  • noreply@yourdomain.com

Make sure those mailboxes exist or forward somewhere a human reads.


Step-by-Step: Reliable Magento 2 Email Setup

Step 1 - Pick a Transactional Provider

Compare:

  • Volume / pricing
  • Region (some providers route better in EU vs US)
  • Features (templates, webhooks, analytics)

For most Magento stores, Postmark, Mailgun, or SES are excellent.


Step 2 - Add SPF, DKIM, DMARC to DNS

Use your provider's setup wizard. They give you the exact records.

Verify with:

dig TXT yourdomain.com
dig TXT _dmarc.yourdomain.com
dig CNAME mail._domainkey.yourdomain.com

Or use a free tool like MXToolbox.


Step 3 - Configure SMTP in Magento

Use the provider's SMTP credentials.

Save the config and run:

php bin/magento cache:clean

Step 4 - Replace Store Email Addresses

Set every sender to a real mailbox on your domain.


Step 5 - Verify Async Email Sending and Cron

Magento 2.3+ supports asynchronous transactional emails. With it enabled, sending happens via dedicated cron jobs registered by the Sales module:

  • sales_send_order_emails
  • sales_send_order_invoice_emails
  • sales_send_order_shipment_emails
  • sales_send_order_creditmemo_emails

Check the setting:

Stores > Configuration > Sales > Sales Emails > General Settings > Asynchronous Sending

Async sending is much friendlier on checkout response time, but it depends entirely on cron.

Confirm cron is running:

crontab -l -u <magento-user>
php bin/magento cron:run

If cron is dead, queued sales emails never go out - even though the admin shows the order as placed.


Step 6 - Send Test Emails

  • Place a real order
  • Trigger a password reset
  • Trigger an admin notification
  • Send a newsletter test

Check headers in the received email:

  • Received-SPF: pass
  • Authentication-Results: ... dkim=pass
  • dmarc=pass

If any fails, fix DNS before going further.


Step 7 - Monitor Bounces and Complaints

Your provider's dashboard shows:

  • Bounces
  • Spam complaints
  • Open rates (if tracked)

Keep complaint rate below 0.1% to maintain reputation.


Email Templates: Don't Trash Your Reputation

Email content matters too.

Inbox filters punish:

  • All-image emails with no text
  • Broken HTML
  • Excessive links
  • Tracking pixels with no clear purpose
  • Domains that don't match the sender

A few practical rules:

  • Always include a plain-text version
  • Match the sender domain to the From address
  • Keep image-to-text ratio reasonable
  • Avoid spam trigger phrases ("Buy now!!!", "FREE!!!")
  • Make unsubscribe one-click for marketing emails

Common Magento Email Mistakes

Mistake 1 - Setting Up SMTP and Skipping DNS

SMTP alone is not enough. SPF and DKIM must point at the provider you're using.


Mistake 2 - Sending Marketing and Transactional From the Same Domain

Bouncy marketing email tanks the reputation of the domain that sends order confirmations.

Use a subdomain for marketing (mail.yourdomain.com) so reputation is isolated.


Mistake 3 - Default Store Email Addresses

general@example.com will never have valid SPF or DKIM, because example.com isn't yours.

Replace every default address.


Mistake 4 - Long Email Queue, No Cron

The Magento admin says the email was sent. Cron never published it.

If your cron is dead, your emails are dead.


Mistake 5 - DMARC Set to p=reject Too Early

Hard policies before SPF and DKIM are verified to pass on every legitimate stream means real email gets rejected by the recipient.

Always start p=none, monitor, then tighten.


Where Moogento Fits

Several Moogento modules send transactional email and benefit from a working delivery pipeline:

  • GiftEasy - gift card notifications, balance updates
  • HelloCustomer - welcome flows and customer onboarding
  • NotifyMe - back-in-stock and low-stock alerts
  • ThanksEasy - automated post-purchase thank-you emails
  • Pulse - sends store digests and alerts

Each of those is only as reliable as the SMTP and DNS layer underneath them.


Real-World Impact

Stores that fix the Magento email stack typically see:

  • Order confirmations landing in the primary inbox instead of spam
  • Fewer "where's my order email?" support tickets
  • Better deliverability for marketing and back-in-stock emails
  • A measurable lift in customer trust

FAQs

Why do my Magento order emails go to spam?

Almost always missing SPF / DKIM, or sending via PHP mail() instead of authenticated SMTP.

Do I need SMTP if Magento sends email out of the box?

Yes for any production store - PHP mail() rarely passes modern inbox filters.

Should I use the same domain for marketing and transactional email?

Use a subdomain for marketing so a bouncy campaign can't tank your order-email reputation.

What's the safest DMARC policy to start with?

p=none for at least two weeks to monitor reports, then escalate to p=quarantine or p=reject.

Why are my newsletter emails delayed?

Cron isn't draining the queue, or the consumer isn't running.


Next Steps

To make Magento email reliable:

  • Pick a real transactional provider
  • Configure SMTP in Magento
  • Add and verify SPF, DKIM, DMARC
  • Replace every default store email address
  • Confirm cron is running the queue

Email reliability is boring infrastructure work. It's also the difference between a store that runs itself and a store that drowns in support tickets.

Was this helpful?

Need source? Raw markdown is available for AI agents, plain-text copying, and diffs.

Raw markdown