I put this together to solve my own problems, using Flask and Mailgun. The tricky part was rewriting the Reply-To header and storing the MessageId, so I can make sure that folks don't get dropped. (Piano teachers are notoriously poor at using Reply-All).
Yes, I know it's a default bootstrap theme. (I apologize).
Yes, I know it's a default bootstrap theme. (I apologize).