Подтвердить что ты не робот

Как отправить асинхронную электронную почту с помощью django

Это мой код:

class EmailThread(threading.Thread):
    def __init__(self, subject, html_content, recipient_list):
        self.subject = subject
        self.recipient_list = recipient_list
        self.html_content = html_content
        threading.Thread.__init__(self)

    def run (self):
        msg = EmailMultiAlternatives(self.subject, self.html_content, EMAIL_HOST_USER, self.recipient_list)
        #if self.html_content:
        msg.attach_alternative(True, "text/html")
        msg.send()

def send_mail(subject, html_content, recipient_list):
    EmailThread(subject, html_content, recipient_list).start()

Он не отправляет электронное письмо. Что я могу сделать?

4b9b3361

Ответ 1

теперь это нормально,

class EmailThread(threading.Thread):
    def __init__(self, subject, html_content, recipient_list):
        self.subject = subject
        self.recipient_list = recipient_list
        self.html_content = html_content
        threading.Thread.__init__(self)

    def run (self):
        msg = EmailMessage(self.subject, self.html_content, EMAIL_HOST_USER, self.recipient_list)
        msg.content_subtype = "html"
        msg.send()

def send_html_mail(subject, html_content, recipient_list):
    EmailThread(subject, html_content, recipient_list).start()

Ответ 2

В долгосрочной перспективе может оказаться хорошим решением использовать стороннее приложение Django, например django-mailer, для обработки всех видов асинхронных требований по отправке/управлению электронной почтой.

Ответ 3

После проверки более сложных решений, основанных на сельдерее и т.д. Я нашел django-post_office (https://github.com/ui/django-post_office) Это очень простая база данных + cron, который занял 5 минут, чтобы встать и работать. Отлично работает как на моей локальной машине-разработчике, так и на Heroku.