Search code examples
rubyemailfailoverfault-tolerance

Failover solution for Email Service Providers (ESPs)?


We are looking for a library, project, or service that lets us transparently use multiple Email Service Providers ("ESPs", e.g. ConstantContact, JangoMail, Sailthru, SendGrid, VerticalResponse, etc). Any ESP we choose will have problems from time to time, and because of the requirements of our business we need to have a failover solution in place to avoid delivery failures.

Basic features we're looking for:

  • Delegation of email delivery to ESPs
  • Automatic failover from one ESP to another (only delivering one email to the given subscriber, not duplicates)
  • Ability to check delivery status (open rates, bounce rates, list size, etc.) across the configured ESPs

In other words, we want a layer that provides failure tolerance and recovery by using multiple ESPs. If it is a library, we would like it to be written in Ruby (but we might be open to considering other languages). Is there an existing project or service that provides this?

Our use case: We send many time-sensitive emails a day to subscribers. However, the ESP we use can go down, but we still need to send emails in a very timely manner (within seconds of the publication). If the initial delivery fails, we would like to move to a secondary, tertiary, etc. ESP to recover from the failure.

I've come up empty handed when searching for an existing solution. These two blog posts capture part of our motivation, though: How To Ensure Your Email Gets Delivered, Using Multiple Service Providers to Mitigate Risk and Avoid Failure


Solution

  • We ended up writing our own service for this.