Regardless of which package you use for delivering email, I can't recommend enough to put the email delivery code into an async job queue that automatically retries.
Even with major providers there are enough occasional blips that you don't want to impact delivery of your email. Additionally, it would allow you to decouple sending (popping from the queue) if you ever needed to delay it momentarily.