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

![Reliable Magento emails editorial hero](images/send-reliable-magento-emails.webp)

## 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](images/send-reliable-magento-emails-lifestyle.webp)

## 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.
