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.
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.
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.
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.
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.
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
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)
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.
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.
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
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.
| Plan | Price | Captures | Retention |
|---|---|---|---|
| Free | $0/mo | Not available | n/a |
| Starter | $19/mo | Up to 100 emails | 7-day retention |
| ProPopular | $39/mo | Up to 1,000 emails | 30-day retention |
| Agency | $199/mo | Unlimited captures | 90-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.