Skip to content

Bulk emails on Odoo for almost free using Amazon SES

Misc  ✺  Dev

Odoo can be a powerful replacement for mass mail and newsletter services like MailChimp, especially if you are already paying for Odoo or if you have reached the 1,000 maximum recipients threshold for MailChimp's free account.

Odoo Online comes with an outbound email service, but it has a limitation of 200 emails per day, and 2,000 emails per month. The only way around it is to set up an external email server.

There are a lot of options (SendGrid, Postman, Mailgun...), but by far the cheapest is Amazon's Simple Email Service (AWS SES), running at $0.10 per 1,000 emails, meaning that sending weekly emails to 2,000 subscribers will cost $0.80 per month (compared to $478/mo for MailChimp, and around $20-50/mo for other providers).

This guide is very brief, and doesn’t explain things in detail. I’m hoping it can provide a general idea, but reach out if you questions about specifics.

Here are the rough steps to set it Amazon SES with Odoo:

  1. Set up AWS: Create an AWS account (if you haven't already), and set up the setting and user permissions for using SES (Amazon's Simple Email Service) on Amazon's end.
  2. Verify outbound emails on SES: In order to be able to send emails from SES, I also needed to validate email addresses that are allowed to send emails. I've validated the domain itself, so any email from that domain will be valid "from" addresses.
  3. Configure domain DNS settings: the SPK, DKIM, DMARC records on the domain need need to be configured to authorize Amazon sending emails on your domain's behalf. These are best practices to validate your outgoing emails, and reduce the chance of ending up in the spam folder (as much as possible). Odoo has a guide to configure DNS records to send email in Odoo.

    A note on domains: it is good practice to set a subdomain for sending emails (e.g. @m.domain.com) so that your marketing emails don't affect your spam score for your `@domain.com` business emails. It also makes the set up much easier, because this won't affect the MX records for the primary domain.
  4. Verify inbound emails: you also need to validate the Odoo inbound emails (e.g. bounce@company.odoo.com). These are used by Odoo for tracking bounces and capturing replies.

    This was tricky, because emails like bounce@ don't actually have inboxes and you need to click the link sent to you by SES. An easy work around is to temporarily change one of the email alias that receive email (like sales@) to the email you’re trying to validate (eg bounce@), click the link, then set it back to the original alias.
  5. Set up external email servers on Odoo: paste the server configurations from AWS in the Odoo technical settings. Odoo has a guide to send and receive emails in Odoo with an email server.

After completing these steps, you should be able to go into the newsletter module and send out a mass email campaign. Note that the cron job for the mail out can take some time, so your email might not be sent out right away.

Comments