Django内置发送邮件功能
2022/3/31 23:23:33
本文主要是介绍Django内置发送邮件功能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一步:setting.py配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = False # 是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完整性。) EMAIL_USE_SSL = False # 是否使用SSL加密,qq企业邮箱要求使用 EMAIL_HOST = 'smtp.163.com' # 发送邮件的邮箱 的 SMTP服务器,这里用了163邮箱 EMAIL_PORT = 25 # 发件箱的SMTP服务器端口# 上面配置可以不动,下面配置修改为自己的 EMAIL_HOST_USER = 'tin@163.com' # 发送邮件的邮箱地址 EMAIL_HOST_PASSWORD = 'xxxxxx' # 发送邮件的邮箱密码(这里使用的是授权码) EMAIL_TO_USER_LIST = ['xxxx@foxmail.com', 'xxx@qq.com'] # 此字段是可选的,用来配置收件人列表
第二步:url.py
# 发送邮件 url(r'^send_emial/', views.send_email, name="send_email")
第三步:views.py
简单发送邮件:
from django.core.mail import send_mail from django.shortcuts import HttpResponse def send_email(request): send_mail( subject='这里是邮件标题', message='这里是邮件内容', from_email='tian@163.com', # 发件人 recipient_list=['1206180814@qq.com'], # 收件人 #收件人可以直接写,也可以从setting.py中配置中导入 fail_silently=False ) return HttpResponse('OK')
send_mail
各参数如下:
- subject,邮件标题
- message,发送邮件内容
- from_email,发件人
- recipient_list,收件人,可以是多个
- fail_silently,如果为
False
时,发送失败抛出错误
现在,有了上述这些关键代码之后,我们就可以向指定的邮箱发邮件了,如果收不到邮件,可有去看垃圾邮件中找找,可能被当成了垃圾邮件(我在qq邮箱中遇到这情况,解决办法是,点开这个邮件,点击我不是垃圾邮件,就好了)。
多封邮件发送多个收件人
from django.core.mail import send_mail, send_mass_mail def send_email(request): message1 = ('邮件标题1', '内容1', 'tian@163.com', ['1206180814@qq.com']) message2 = ('邮件标题2', '内容2', 'tian@163.com', ['1206180814@qq.com']) send_mass_mail((message1, message2), fail_silently=False) return HttpResponse('OK')
当发送多封邮件时,就要使用send_mass_mail
了。上例中的列表内,也可以填写多个收件人。
这里简要说下send_mail
和send_mass_mail
的区别:
send_mail
每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail
是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail
要优于 send_mail
。
发送带有附件的邮件
导入EmailMessage来完成:
from django.shortcuts import render, HttpResponse from django.core.mail import EmailMessage def send_email(request): """发送带附件""" msg = EmailMessage( subject='这是带附件的邮件标题', body='这是带附件的邮件内容', from_email='tian@163.com', # 也可以从settings中获取 to=['1206180814@qq.com'] ) msg.attach_file('t2.xls') msg.send(fail_silently=False) return HttpResponse('OK')
上例中,attach_file
使用当前文件系统下的某个文件做为附件。调用时,传入某个文件的完整路径,以及该附件的MIME类型(可选的)。 忽略MIME类型的话,Django会自动根据附件文件名来推测MIME类型。最简单的用法如下:
message.attach_file('/images/weather_map.png')
另外的,我们还可以使用attach
传递三个参数:filename
,content
和 mimetype. filename
是出现在邮件中的附件文件的名称,content
是附件的内容,而 mimetype
是附件所使用的MIME类型。 如果忽略 mimetype
, Django会自动根据附件文件名来推测MIME内容类型。
例如:
message.attach('design.png', img_data, 'image/png')
https://docs.djangoproject.com/zh-hans/3.2/topics/email/
https://www.cnblogs.com/qingchengzi/articles/14449307.html
这篇关于Django内置发送邮件功能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南