Django框架之邮件系统,涉及HTML、富文本、附件邮件发送

参考

(892条消息) Django框架之邮件系统,涉及HTML、富文本、附件邮件发送_django邮件系统_李恩泽的技术博客的博客-CSDN博客icon-default.png?t=N5K3https://blog.csdn.net/heroiclee/article/details/121406488

发送设置(settings.py)

EMAIL_USE_SSL = True # Secure Sockets Layer 安全套接层, 取决于邮件服务器是否开启加密协议
EMAIL_HOST = 'smtp.qq.com'  # 邮件服务器地址
EMAIL_PORT = 465 # 邮件服务器端口 
EMAIL_HOST_USER = 'account@qq.com' # 登陆邮件服务器的账号
EMAIL_HOST_PASSWORD = 'password'  # 登陆邮件服务器的密码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # 邮件的发送者

发送文本邮件

发送普通邮件可以使用django.core.mail模块下的send_mail函数进行

函数介绍 

send_mail(subject, message, from_email, recipient_list, fail_silently=False, html_message=None)
# 将邮件发送至`recipient_list`中的每一个收件人处
'''
subject: 发送邮件标题
message: 发送邮件正文
from_email: 发件人邮箱地址
recipient_list: 一个字符串列表,每一个数据为接收者的邮箱地址
html_message: 如果指定该值,则发送的内容类型为text/html为一个html邮件内容
''

发送普通邮件视图函数

from django.core.mail import send_mail
def send_email(request):subject = '邮件测试'message = '<a href="http://www.python.org">学习Python,我很快乐</a>'send_mail(subject = subject,message = message,from_email = 'from@qq.com',recipient_list = ['recv@qq.com','recv1@qq.com'])return HttpResponse('Down')

发送HTML邮件

函数介绍

这里发送的邮件内容为一个HTMLa标签,但是真正接收者接到该邮件时,a标签并不会解释称为真正的a标签,只是一个普通的字符串,这是因为当前发送邮件的类型为text/plain,可以使用html_message参数进行HTML内容的发送

from django.core.mail import send_mail
def send_email(request):    subject = '邮件测试'message = '<a href="http://www.python.org">学习Python,我很快乐</a>'send_mail(subject = subject,message = '', # 该参数为必须参数,必须填写html_message = message,from_email = 'from@qq.com',recipient_list =['recv@qq.com','recv1@qq.com'])return HttpResponse('Down')

 发送html格式邮件还可以使用django.core.mail模块下的EmailMultiAlternatives类进行邮件体的构造,然后进行邮件发送

EmailMultiAlternatives(subject='', body='', from_email=None, to=None)
'''
subject: 邮件标题
body: 邮件内容
from_email: 邮件发送者
to: 邮件接收人列表
'''
EmailMultiAlternatives.attach_alternative(content, mimetype)
# 向EmailMultiAlternatives实例中添加mimetype支持的邮件内容
'''
content: 添加的邮件内容
mimetype: 添加内容的mime类型
''
EmailMultiAlternatives.send()
# 发送邮件

示例

from django.core.mail import EmailMultiAlternatives
def send_email(request):subject = '邮件测试'text_message = '学习Python,我很快乐'html_message = '<a href="http://www.python.org">学习Python,我很快乐</a>'email = EmailMultiAlternatives(subject = subject,body = text_message,from_email = '1747266529@qq.com',to = ['recv@qq.com','recv1@qq.com'])email.attach_alternative(html_message,'text/html') # 添加HTML邮件部分email.send() # 发送邮件return HttpResponse('Down')

发送富文本邮件

经常需要我们在邮件中加入图片等静态资源

需要用到python中email.mime.image模块下的MIMEImage类进行图片内容的构造

这里发送邮件使用EmailMessage类,来自于django.core.mail模块下;再使用对应该类实例的attach添加图片资源数据,最后使用实例的send函数发送邮件
 

 函数介绍

EmailMessage(subject='', body='', from_email=None, to=None)
'''
subject: 邮件标题
body: 邮件内容
from_email: 邮件发送者
to: 邮件接收人列表
'''
 

EmailMessage(subject='', body='', from_email=None, to=None)
'''
subject: 邮件标题
body: 邮件内容
from_email: 邮件发送者
to: 邮件接收人列表
'''

 示例

from sendmailpro.settings import STATICFILES_DIRS
import os
from email.mime.image import MIMEImage
from django.core.mail import EmailMessage
def send_email(request):subject = '图片邮件测试'file_1 = os.path.join(STATICFILES_DIRS[0],'img/1.png')with open(file_1, 'rb') as fp: # 打开第一张图片image_1 = MIMEImage(fp.read())file_2 = os.path.join(STATICFILES_DIRS[0],'img/2.png')with open(file_2, 'rb') as fp: # 打开第二张图片image_2 = MIMEImage(fp.read())body = "<img src='cid:first_id'><br><img src='cid:sec_id'>"# 发送邮件主体内容image_1.add_header('Content-ID','<%s>' % 'first_id') # 通过 CID 对称图片在邮件内容中的位置image_2.add_header('Content-ID','<%s>' % 'sec_id')message = EmailMessage( # 构建发送的邮件主体subject=subject,body=body,from_email='from@qq.com',to=['recv@qq.com','recv1@qq.com'])message.content_subtype = 'html'message.attach(image_1) # 添加两张图片message.attach(image_2)message.send() # 发送邮件return HttpResponse('Down')

发送附件邮件

发送附件,可以使用django.core.mail模块下的EmailMessage类进行附件邮件体构造

通过EmailMessage实例的attach|attach_file两种函数在邮件主体中添加附件内容

attach_file添加邮件附件直接加入路径即可,但是attach添加附件内容需要提供附件内容
 

函数介绍

attach(filename=None, content=None, mimetype=None)
# 添加附件内容
'''
filename: 附件文件名称
content: 附件内容
mimetype: 附件的`MIME`类型
'''
attach_file(path, mimetype=None)
# 直接通过路径添加附件
'''
path: 附件路径
mimetype: 附件的MIME类型
'''

示例

from sendmailpro.settings import STATICFILES_DIRS
import os
from email.mime.image import MIMEImage
from django.core.mail import EmailMessage
def send_email(request):subject = '附件邮件测试'email = EmailMessage(subject=subject,body='这是一封具有图片附件的邮件',from_email='from@qq.com',to=['recv@qq.com','recv1@qq.com'])file_1 = os.path.join(STATICFILES_DIRS[0],'img/1.png')image_1 = open(file_1,'rb').read()email.attach('1.png',image_1,'image/png') # 使用attach实例函数添加附件内容file_2 = os.path.join(STATICFILES_DIRS[0],'img/2.png')email.attach_file(file_2,mimetype='image/png') # 使用attach_file实例函数添加附件路径email.send()return HttpResponse('Down')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2922.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt关闭主窗口后,退出所有异步线程

目录 1.要知道主窗口什么时候关闭2.关闭异步线程 1.要知道主窗口什么时候关闭 在widget.h新增下面的函数 private slots:void closeEvent(QCloseEvent *event);在widget.cpp新增 void Widget::closeEvent(QCloseEvent *event) {qDebug() << "关闭主窗口了&#x…

机器学习复习6

机器学习复习 1 - 在机器学习的背景下&#xff0c;什么是诊断(diagnostic)&#xff1f; A. 这指的是衡量一个学习算法在测试集(算法没有被训练过的数据)上表现如何的过程 B. 迅速尝试尽可能多的不同方法来改进算法&#xff0c;从而看看什么方法有效 C. 机器学习在医疗领域的应用…

基于Java+Swing+Mysql物流跟踪管理系统

基于JavaSwingMysql物流跟踪管理系统 一、系统介绍二、功能展示1.主页2.新增物流信息3.删除物流信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看物流列表、新增物流信息、删除物流信息 运行环境&#xff1a;eclipse、idea、jdk1.8 二、功能展示…

satellite: 利用TLE动态计算并实时显示多颗卫星的位置及轨迹

本示例的目的是介绍演示如何在vue+satellite项目中利用两行根数动态地计算,并显示多个卫星的位置及轨迹。每秒钟更新一下卫星的位置和角度,加载当前时间到固定时间(如720分钟后)的一段轨迹。 直接复制下面的 vue+openlayers源示例代码,操作2分钟即可运行实现效果 文章目…

怎么去除视频里的背景音乐?其实非常简单!

如何去除视频背景音乐&#xff1f;在视频处理中&#xff0c;有时我们需要从视频中提取声音并进行处理&#xff0c;而不仅仅是简单地去除整个背景音乐。我们可能需要有选择性地去除人声或背景音乐。这个处理过程对于选用合适的工具至关重要。在本文中&#xff0c;我将分享两种可…

深度学习图像分类、目标检测、图像分割源码小项目

​demo仓库和视频演示&#xff1a; 银色子弹zg的个人空间-银色子弹zg个人主页-哔哩哔哩视频 卷积网路CNN分类的模型一般使用包括alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNeXt、ShuffleNet、VGG、EfficientNet和Swin transformer等10多种模型 目标检测包括…

基于Python热门旅游景点数据分析系统设计与实现

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专…

【MySql】基本查询

文章目录 插入操作insert查询操作selectselect查询where条件判断order by排序limit筛选分页结果 更新操作update删除操作delete插入查询结果 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 先创建提供一张表&am…

【CentOS】VirtualBox yum 无法使用

【CentOS】VirtualBox yum 无法使用 yum install net-tools -y出现如下错误&#xff1a; cannot find a valid baseurl for repo: base/7/x86_64或无法ping 解决如下&#xff1a; 进入系统&#xff0c;修改网卡信息。 执行修改命令&#xff0c;ifcfg-xxx 后面的xxx就是上面…

【从删库到跑路】MySQL系列——详细讲解SQL的DDL,DML,DQL,DCL语句

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;关系型数据库⭐概念⭐特点 &#x1f354;MySQL数…

PACS/RIS医学影像管理系统源码 提供先进图像处理和算法

PACS&#xff08;医学影像存档与通信系统&#xff09;主要应用于医学影像的存储、传输和显示。它可以使医生突破胶片的局限&#xff0c;对病人的影像进行全方位的处理和观察&#xff0c;以便得出更准确的诊断。同时&#xff0c;PACS可以节省大量的胶片&#xff0c;降低成本。医…

mac m4a转mp3怎么转?

mac m4a转mp3怎么操作&#xff1f;小编之前编写了在windows系统电脑上进行音频格式转换的教程和方法&#xff0c;帮助了不少的小伙伴。最近有一个粉丝朋友向我求助&#xff0c;因为自己使用的是苹果mac电脑&#xff0c;有没有什么方法可以在上面将m4a音频格式转换成mp3。因为使…