Django发送html邮件的方法
作者:NavCat 发布时间:2021-04-06 13:22:52
本文实例讲述了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 EmailMultiAlternatives
from django.template import Context, loader
subject, from_email, to = title, EMAIL_HOST_USER, mail_list
html_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 EmailMultiAlternatives
from django.template import Context, loader
subject, from_email, to = title, EMAIL_HOST_USER, mail_list
html_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_connection
from django.template import Context, loader
conn = 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_list
html_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程序设计有所帮助。
猜你喜欢
- IE中的获取文本方法innerText在firefox中不支持 firefox改成了textContent方法/属性 并且在Firefox中
- 首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参
- Windowns操作系统中安装Python,供大家参考,具体内容如下一.下载Python1.python 官网 下载安装包2.选择
- --处理表重复记录(查询和删除)/*****************************************************
- 应该是开心网(kaixin.com)的宠物功能又升级了,这几次发来的邮件内容不仅不能让我开心,反而让我觉得很恶心。开心网注册也一段时间了,之
- 本文实例讲述了MSSQL分页存储过程。分享给大家供大家参考,具体如下:USE [DB_Common]GO/****** 对象: Stored
- 新手小白,一直在为cmd窗口的暗白色文字感到苦恼,在网上找了许多方法(也就那两种吐舌头),现在稍微整理了一下,便于使用。效果图:import
- 本文实例讲述了Python2随机数列生成器。分享给大家供大家参考,具体如下:#filename:randNumber.pyimport ra
- 本文实例讲述了Python使用matplotlib和pandas实现的画图操作。分享给大家供大家参考,具体如下:画图在工作再所难免,尤其在做
- 自定义比较排序/运算符Python3和Python2相比有挺多变化。在Python2中可以直接写一个cmp函数作为参数传入sort来自定义排
- 来自 * 我们的大脑通常最多能感知三维空间,超过三维就很难想象了。尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面。不过,我们
- 导语:谷歌浏览器中有个很有名的彩蛋:当你网络出现问题时,就会出现一个“小恐龙游戏”。🦖相信很多人都玩过 chrome 上提供的恐龙跑跑游戏,
- 简介在这篇文章中我将介绍如何写一个简短(200行)的 Python 脚本,来自动地将一幅图片的脸替换为另一幅图片的脸。这个过程分四步:检测脸
- 目录1、面向对象基本概念1.1 万物皆对象1.2 面向对象编程1.3 面向对象的特征2、Python面向对象的术语3、Python类的构建3
- 这是不久前写的一个分页存储过程,可应用于SQL Server 2005上面: if object_ID('[proc_SelectF
- 如下所示:<code class="language-python">import numpy as np
- asp之家注:有时候我们需要知道我们链接的远程图片是否正常,是否存在,当不存在时如果我们继续引用,就会在网页上留个大大的X,影响了页面美观。
- 背景:今天才申请了腾讯云+校园计划的1元服务器,安装了Centos7.0,在安装MySQL的时候,使用yum list | grep mys
- 本文实例讲述了python实现的自动发送消息功能。分享给大家供大家参考,具体如下:一个简单的脚本#-*- coding:utf-8 -*-f
- 我的大体思路是:时时监听鼠标的坐标,当鼠标移动时,透明层随着鼠标移动,大图片相对透明层的移动而移动。不废话了,看代码。 <!DOCTY