您的位置:首页 > 编程语言 > Go语言

Django中使用多线程发送邮件

2012-11-13 12:33 465 查看
转自:http://blog.sina.com.cn/s/blog_63f0cfb20100mhv4.html

当然了,网上关于Django发送邮件的资料蛮多的,但是基本上都是使用send_mail()。于是我也屁颠屁颠的找到某一个版本使用,邮件发送是成功了,但那速度实在是很蜗牛。刚开始以为是开发环境的原因,结果到了服务器的生产环境依然需要等到花都谢了,于是乎Google之,无果。豆瓣上有一仁兄给了个链接(在这里),参考之另加使用模板文件,于是生成又一个小异的版本。

1、settings.py 增加Email设置

#mail

EMAIL_HOST = 'smtp.gmail.com' #邮件smtp服务器

EMAIL_PORT = '25' #端口

EMAIL_HOST_USER = 'code***@gmail.com' #邮件账户

EMAIL_HOST_PASSWORD = '*********' #密码

EMAIL_USE_TLS = False

2、views.py 发送邮件

from django.core.mail import EmailMultiAlternatives

from django.template import loader

from settings import EMAIL_HOST_USER

import threading

from_email = EMAIL_HOST_USER

class EmailThread(threading.Thread):

def __init__(self, subject, body, from_email, recipient_list, fail_silently, html):

self.subject = subject

self.body = body

self.recipient_list = recipient_list

self.from_email = from_email

self.fail_silently = fail_silently

self.html = html

threading.Thread.__init__(self)

def run (self):

msg = EmailMultiAlternatives(self.subject, self.body, self.from_email, self.recipient_list)

if self.html:

msg.attach_alternative(self.body,self.html)

msg.send(self.fail_silently)

def send_mail(subject, body, from_email, recipient_list, fail_silently=False, html=None, *args, **kwargs):

EmailThread(subject, body, from_email, recipient_list, fail_silently, html).start()

def test_mail(request):

subject = u'邮件主题'

to_mail_list = ['abc@gmail.com','test@qq.com']

body = loader.render_to_string('mail_template.html',

{'email':email,'date':datetime.today(), }

)

send_mail(subject,body,from_email,to_mail_list,html="text/html")

return "ok"

代码比较简单就不解释了,到这里Django多线程发送Email基本功能已经完成。当然了还需要新建一个模板文件,这里是以mail_template.html命名的。

The end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: