Нативный send_mail действительно умеет все, что нужно. Это обертка для smtplib, кстати.
В качестве smtp-сервера обычно использую Яндекса/Гугла, но если ожидается много сообщений, то лучше использовать очередь: собирать письма и отправлять разово, например, утром. Это cron, либо celery. Тогда нагрузка на smtp-сервер минимальна.
Roman Kitaev: надо смотреть, какая посещаемость, какая конверсия. У меня был опыт с сайтами, которые по несколько лет работали и ни разу не превышали лимит. При этом обычные формы, никаких каптч (правда, формы на JS + я использовал "защиту" от ботов, называя поле с емейлом как "city", на практике 99% ботов через нее не пройдут). Допустим, 5000 посещений в сутки, если у них конверсия 5% касательно формы, что очень-очень много, то это 250 сообщений всего. У Гугла ограничение в 500 в сутки, а у google apps вообще в 2000. В таких случаях можно не париться. Если же ресурс/конверсия больше, совершаются набеги на форму, то да. То есть я исхожу из задачи, есть проекты, для которых это оверкилл.
А если рассуждать о "красоте решения", то я бы, конечно, сделал все красивее в абстрактном мире. Но не стану утверждать, что это очевидная необходимость.