如何使用django发送异步电子邮件

zjm*_*126 17 python email django asynchronous

这是我的代码:

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()
Run Code Online (Sandbox Code Playgroud)

它不发送电子邮件.我能做什么?

zjm*_*126 27

现在好了

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()
Run Code Online (Sandbox Code Playgroud)

  • Mailgun 实际上并不能解决所提出的问题。他想异步发送电子邮件。电子邮件将使用一些 smpt 服务器发送,该服务器可以是 mailgun,但异步发送,必须使用线程/celery 或任何解决方案。 (2认同)
  • Celery 对于仅仅发送电子邮件来说绝对是一种过度杀伤力。这是处理异步电子邮件发送的更好方法。 (2认同)

aya*_*yaz 12

从长远来看,使用第三方Django应用程序(例如django-mailer)来处理各种异步电子邮件发送/管理要求可能是一个很好的决定.