django-sendmail
Не используйте email backend в django, если конечно вам достаточно smtp. А если нет? Вот я лучше прибегну к серверной команде sendmail для отправки почты, чем буду использовать smtp для приложения.
При этом подходе мы получаем возможность очереди отправки, нам не надо писать отдельный скрипт и ложить его в крон задачу. Улучшается производительность системы за счет того, что операций запроса, авторизации и отправки прямо из приложения нет. Вместо этого весь контент писем идет сплошным текстом к созданному sendmail каналу (pipe).
Приведу очень простой пример:
from django.conf import settings
from django.utils.encoding import smart_str
import os
def sendmail(to, subject, body):
p = os.popen('/usr/bin/sendmail -t', 'w')
p.write("MIME-Version: 1.0\n")
p.write("Content-Type: text/html;charset=utf-8\n")
p.write("To: %s\n" % to)
p.write(smart_str("From: %s\n" % settings.EMAIL_FROM))
p.write(smart_str("Subject: %s\n" % subject))
p.write("\n")
p.write(smart_str(body))
p.close()
Такой скрипт не будет работать на windows, я не видел пакета sendmail в этой операционной системе. Да и я не встречал серверов Windows, на которых бы хостились django приложения.
Я не написал чего мы лишаемся при таком подходе. Мы не можем определить какие письма были успешно доставлены, а какие нет.
