Как отправить асинхронную электронную почту с помощью Django - PullRequest
17 голосов
/ 15 декабря 2010

Это мой код:

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()

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

Ответы [ 3 ]

27 голосов
/ 15 декабря 2010

теперь все в порядке;

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()
12 голосов
/ 15 декабря 2010

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

1 голос
/ 24 января 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...