Skip to main content
New in v1.36

Why your Odoo emails go to spam (and how to fix it)

Mailtest captures every email Odoo sends. Then it scores them for deliverability so you know exactly what to fix.

Built into OEC.sh. No extra setup. Available on every paid plan.

The problem with Odoo email

Odoo sends a lot of email. Invoices, quotes, password resets, follower notifications, marketing campaigns, internal alerts. And almost every Odoo team eventually hits the same wall: half of it ends up in spam. Here's why.

SPF, DKIM, DMARC misconfigured

Your sender authentication is broken. Gmail and Outlook treat unauthenticated mail as suspicious by default. One missing record and you're in the spam folder.

HTML triggers spam filters

Broken images. Inline styles. Base64 data URIs blowing up the email size. Spam filters see this stuff and quietly route you to junk.

Content scores high on SpamAssassin

Certain words, all-caps subjects, too many exclamation marks, weird link structures. SpamAssassin scores every email out of 10. You want under 2. You're probably at 6.

No way to test before sending

Most teams find out their emails are going to spam from a customer complaint. By then, you've already lost trust on dozens of invoices and password resets.

How Mailtest works

Four steps. The whole thing takes about 30 seconds to set up.

1

Enable Mailtest on your Odoo environment

One click in the OEC.sh dashboard. Pick the environment (production, staging, dev), pick the mode (capture-only or mirror), done.

2

Odoo points to a dedicated SMTP capture container

We provision a private SMTP capture endpoint per environment and update Odoo's outgoing mail server config. No DNS changes, no API keys.

3

Every email Odoo sends lands in your Mailtest inbox

From quotes to password resets, every outgoing email is captured in real time. Search, filter, view, score.

4

Open any email to see the deliverability score and exact fixes

Click any captured email. Get the full breakdown: SPF, DKIM, DMARC, SpamAssassin, HTML quality. Plus the specific changes to make.

What gets scored

Three tiers, scored on every captured email. Each tier surfaces a different class of failure. You fix what matters first.

Tier 1

Authentication

SPF, DKIM, DMARC

Pass or fail on each, with the exact DNS record you need to add. We resolve your sending domain, check alignment, and tell you what's missing in plain English.

  • SPF record present and aligned
  • DKIM signature valid and key found in DNS
  • DMARC policy exists and aligned with SPF or DKIM
  • Reverse DNS (PTR) configured for sending IP
Tier 2

Content

SpamAssassin

We run every captured email through SpamAssassin and show you the exact rules that fired, line by line. Score out of 10. Anything over 5 is junk territory.

  • Score breakdown per rule
  • Subject line analysis (caps, punctuation, length)
  • Body content checks (suspicious phrases, link ratios)
  • Header sanity (X-Mailer, Message-ID, Date)
Tier 3

HTML quality

Render & weight

We render the HTML in a sandboxed preview and grade it. Bloated emails with inline base64 are the silent killer of Odoo deliverability.

  • Broken or missing image references
  • Missing alt text on images
  • Inline CSS issues and unsupported properties
  • Base64 inflation (huge emails get demoted)

The inbox

Mailtest looks like a real email client. Two-panel layout: a list of captured emails on the left, and a preview pane on the right. Anyone who's used Gmail can use it.

Inbox (3)
noreply@acme.com1.2
Your invoice INV/2026/0142
noreply@acme.com6.8
Password reset request
marketing@acme.com4.1
May newsletter, big news inside!
PreviewScoreHeadersSourceAttachments
From: noreply@acme.com
Subject: Your invoice INV/2026/0142
Score: 1.2 / 10(low spam risk)
Your invoice INV/2026/0142 is attached. Total: $1,240.00. Due May 20.

5 tabs per email

Preview, Score, Headers, Source, Attachments. Everything you need to debug, in one place.

SSRF-safe HTML preview

We render the email in a sandboxed iframe with no outbound network access. No info leaks back to a malicious sender.

Bulk select and manage

Mark read, mark unread, delete, export. Works on selections of any size.

Search and filter

Search by sender, recipient, subject, date, or score range. Find the one email you actually care about in seconds.

Use cases

Four ways teams use Mailtest day to day.

Test new email templates before launch

Build a new welcome flow or invoice template. Send it through Mailtest first. See the score. Fix issues. Ship to customers with confidence.

Debug 'my customer didn't get the invoice'

Pull up the captured email by recipient or date. See whether it was sent, whether it was authenticated, whether it would have hit spam. Stop guessing.

Audit transactional emails

Order confirmations, password resets, follower notifications, reminders. Mailtest captures all of them, scores them, and shows you which ones need fixing.

Prove your domain is configured right

After SPF, DKIM, and DMARC are set up, send a test email and screenshot the green checks in Mailtest. Send it to your CEO. Done.

Why this beats external email testers

You've probably tried Mail Tester or one of the dozen clones. They work, sort of. Here's the difference.

External tools

Manual, copy-paste, partial

  • Copy email content, paste into a web form
  • Run check on a synthetic, single-shot email
  • API limits and per-email costs at scale
  • Yet another tool to sign up for
Mailtest

Automatic, live, in context

  • Sends through your real Odoo SMTP, captures live
  • Scores in context of your domain, your DNS, your headers
  • No API limits, no per-email cost
  • Built into OEC.sh, no extra signup

External tools score a copy of your email. Mailtest scores the actual email your customer would have received. That's a different question, and a more useful answer. See also our comparison with Odoo.sh where deliverability tooling is one of the bigger gaps.

Plan availability

Mailtest ships on every paid plan. Capture limits and retention scale with the plan.

PlanPriceCapturesRetention
Free$0/moNot availablen/a
Starter$19/moUp to 100 emails7-day retention
ProPopular$39/moUp to 1,000 emails30-day retention
Agency$199/moUnlimited captures90-day retention + fleet dashboard

Note: actual limits may vary. Need different numbers for an enterprise rollout? Contact us and we'll work it out.

Security & privacy

Captured emails contain real customer data. We treat them accordingly.

Encrypted at rest

All captured emails are encrypted at rest. Storage keys are managed per organization.

Auto-rotation of capture credentials

SMTP credentials for the capture container rotate automatically. If a credential leaks, blast radius is short.

Per-org isolation

Your captures are visible only to your org. Other OEC.sh tenants cannot see your emails. Hard tenant boundary.

SSRF defense in HTML preview

HTML previews render in a sandboxed iframe with no outbound network. Attackers can't probe your internal network through tracking pixels.

Auto-deletion based on retention

Emails delete automatically when they exceed your plan's retention window. No manual cleanup, no lingering data.

Audit trail

Who viewed which captured email, and when. Full audit log per environment.

Frequently Asked Questions

Does Mailtest replace my production SMTP?

No. Mailtest sits alongside your real SMTP. You can run it in capture-only mode (every email lands in the Mailtest inbox and nowhere else), or in mirror mode where Mailtest captures a copy and your production SMTP still sends to the real recipient. Choose per environment.

Will my customers actually receive emails?

Depends on the mode. In test mode, no. Emails get captured by Mailtest and stop there, perfect for staging environments. In production with capture-only enabled, also no. In mirror mode, yes. Your customers receive emails through your real SMTP and Mailtest captures a copy for review.

How do I enable Mailtest?

One toggle in the OEC.sh dashboard for the environment you want. We point your Odoo's outgoing mail server to a dedicated SMTP capture container that ships with the platform. No DNS changes, no API keys, no code changes.

What's a good SpamAssassin score?

Aim for under 2.0 out of 10. Anything 5.0 or higher will get flagged as spam by most filters. Mailtest shows you the exact rules that fired (like missing SPF, suspicious phrases, broken HTML) so you know what to fix.

Can I export captured emails?

Yes. Export individual emails as .eml files (the raw RFC 5322 source) or bulk export a date range as a zip. Useful for forwarding to your dev team or attaching to a support ticket.

Does this work with Odoo email templates?

Yes. Mailtest captures whatever Odoo sends, no matter the source: marketing campaigns, transactional emails from sale.order or account.move, password resets, follower notifications, manually composed messages. If Odoo sends it, Mailtest sees it.

Try Mailtest Free

Stop finding out from customers that your emails went to spam. Capture every Odoo email, score it, fix what's broken. One toggle.