【发布时间】:2016-02-16 10:16:44
【问题描述】:
django 发送电子邮件时,根据 smtp 服务器的不同,需要几毫秒到几秒的时间。所以我面临的问题是当 django 开始发送电子邮件时它会冻结在那里。用户必须等到邮件发送完毕。我想知道我是否可以简单地返回 html 页面并在后台发送电子邮件而无需用户等待。
骨架是在呈现页面之前,正在发送电子邮件。所以,我想先渲染页面,然后在后台发送邮件。
【问题讨论】:
标签: django django-email
django 发送电子邮件时,根据 smtp 服务器的不同,需要几毫秒到几秒的时间。所以我面临的问题是当 django 开始发送电子邮件时它会冻结在那里。用户必须等到邮件发送完毕。我想知道我是否可以简单地返回 html 页面并在后台发送电子邮件而无需用户等待。
骨架是在呈现页面之前,正在发送电子邮件。所以,我想先渲染页面,然后在后台发送邮件。
【问题讨论】:
标签: django django-email
我在使用线程的项目中做过类似的事情:
class EmailThread(Thread):
def __init__(self, myemail):
self.myemail = myemail
Thread.__init__(self)
def run(self):
self.myemail.send()
class MyEmailMessage(EmailMessage):
def send_async(self, fail_silently=False):
thread = EmailThread(self)
thread.start()
# send email
email = MyEmailMessage(...)
email.send_async()
【讨论】:
还有一个不错的项目叫做django-mailer。 它将邮件保存在您的数据库中,您可以通过 crontab 或 celery 异步发送它们。
【讨论】: