Sometimes the best solution isn't writing new code - it's picking the right service. We just signed up with SendGrid to help deal with a bunch of different transactional email issues. We did so because we needed a good way to:
- Make sure our transactional emails are delivered.
- Measure that emails are being delivered and opened.
- Ensure we are able to comply with Federal CAN-SPAM regulations.
We started by looking at the usual cloud suspect: Amazon SES. Problem is (at the time as of December 14, you can now send SMTP on SES) you have to send emails using a web service, and that would have led to additional code (and the potential for breakage that comes with extra code), and blocked compatibility with common tools like Sendmail for people who may use our open source, self hosted products. So we had to dig more.
After a little searching we found SendGrid.com. SendGrid's service makes sense - we achieved our initial goals (CAN-SPAM compliance, delivery, and measurability) and picked up some fantastic extras:
- An E-Newsletter tool.
- Incredibly nice metrics and a great API to include delivery stats in our web applications.
- The ability to let multiple business units leverage SendGrid.
There was one problem: the provided Python SendGrid API was a little less than Pythonic. So we took a little time, updated the API, and added some additional functionality for Django developers. So, if you are using SendGrid and Python, feel free to grab our version of the updated Python SendGrid SMTP API implementation on Github.