本文实例讲述了django发送html邮件的方法。分享给大家供大家参考。具体如下:
在django中,发送邮件非常的方便,一直没有时间,今天来做一个小小的总结吧。
我们常用的当然是通过send_mail发送邮件:
复制代码 代码如下:send_mail(subject,message,from_email,recipient_list,fail_silently=false,auth_user=none,auth_password=none,connection=none)subject,message,from_email 和recipient_list 这四个参数是必须的。
subject: 字符串,表示邮件标题。
message: 字符串,表示邮件内容。
from_email: 字符串,表示发件邮箱。
recipient_list: 字符串列表,列表中每个成员都是一个邮箱地址,而且每个收件人都会在 “收件人/to:” 栏看到出现在recipient_list 中的其他收件人。
fail_silently: (可选)布尔值。为false 时,send_mail 会抛出smtplib.smtpexception 异常。smtplib 文档列出了所有可能的异常。这些异常都是smtpexception 的子类。
auth_user: (可选)smtp服务器的认证用户名。没提供该参数的情况下,django会使用email_host_user 配置项的设置。
auth_password: (可选)smtp服务器的认证密码,没提供该参数的情况下,django会使用email_host_password 配置项的设置。
connection: (可选)发送邮件的后端。没提供该参数的情况下,django会使用默认后端的实例。
以下是一个简单的事例:
from django.core.mail import send_mail from django.template import context, loader context = { 'nickname': user.nickname, 'verify_url': verify_url, } email_template_name = 'template.html' t = loader.get_template(email_template_name) mail_list = [user.email, ] send_mail( subject=title, message=t.render(context(context)), from_email=email_host_user,# 发件邮箱 recipient_list=mail_list, fail_silently=false, auth_user=email_host_user, # smtp服务器的认证用户名 auth_password=email_host_password, # smtp服务器的认证用户密码 connection=none )
用过的人可能会发现,你在template.html中的标签,并没有通过浏览器的解析而显示出来了。
怎么办?我们要发送html邮件,django当然是为你提供了好的解决方案的,请看下面一段代码:
from django.core.mail import emailmultialternativesfrom django.template import context, loadersubject, from_email, to = title, email_host_user, mail_listhtml_content = t.render(context(context))msg = emailmultialternatives(subject, html_content, from_email, to)msg.attach_alternative(html_content, text/html)msg.send()
看,很简单吧,那么现在我要稍稍的做一点点改动,我需要发送附件给收件人,只需要做一个简单的修改即可:
from django.core.mail import emailmultialternativesfrom django.template import context, loadersubject, from_email, to = title, email_host_user, mail_listhtml_content = t.render(context(context))msg = emailmultialternatives(subject, html_content, from_email, to)msg.attach_alternative(html_content, text/html)msg.attach_file(u'd:/my documents/python/doc/test.doc') # 添加附件发送msg.send()
好了,到此为止,发送邮件已经结束了。不过,此时,需求变了,我在自己的网站上配置了多个发送邮件的用户名和密码,现在需要用我指定的用户名和密码给用户发送邮件,该怎么办呢?请看下面的一段代码:
from django.core.mail import emailmultialternatives,get_connectionfrom django.template import context, loaderconn = get_connection() # 返回当前使用的邮件后端的实例conn.username = 'my_email@qq.com'# 更改用户名conn.password = 'my_email' # 更改密码conn.host = 'smtp.exmail.qq.com' # 设置邮件服务器conn.open() # 打开连接email_host_user = 'my_email@qq.com'subject, from_email, to = title, email_host_user, mail_listhtml_content = t.render(context(context))msg = emailmultialternatives(subject, html_content, from_email, to)msg.attach_alternative(html_content, text/html)conn.send_messages([msg,]) # 我们用send_messages发送邮件 conn.close()# 发送完毕记得关闭连接
看来,也不是很难吧!
django.core.mail 的 get_connection()方法返回你当前使用的邮件后端的实例。
复制代码 代码如下:get_connection(backend=none,fail_silently=false,*args, **kwargs)
默认情况下,对 get_connection() 的调用会返回一个邮件后端实例,具体是哪个后端由email_backend 配置项决定。如果指定了``backend`` 参数,就会对该后端进行实例化。友情提示:在发送的html邮件中包含图片时,应该制定可以通过http访问的地址。如:http://www.baidu.com/medias/xxx.png
希望本文所述对大家的python程序设计有所帮助。