django发送邮件:send_mail()&send_mass_mail()

自强学堂

刘江的博客

HTTPS,TLS和SSL

django发送邮件及其相关问题

步骤 :

  0. 登录作为发送方的邮箱,开启smtp服务,一般需要设置授权码用于第三方登录

  1. settings.py中配置如下:

 # 邮件发送设置
# 设置EMAIL_BACKEND确保使用的是smtp
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# 安全机制设置为SSL加密机制, 注意:SSL与TLS互斥, 不能同时设置为True
EMAIL_USE_TLS = False # 不使用TLS安全传输协议, 默认为False, 写出来是为了清楚
EMAIL_USE_SSL = True # 使用SSL加密
EMAIL_HOST = 'smtp.163.com' # 发送邮件使用的smtp服务器
EMAIL_PORT = 465 # 发件箱的smtp服务器端口号,使用了SSL加密后的端口号应为465或587,非加密则是25
EMAIL_HOST_USER = 'eget_administrator@163.com' # 发送邮件的邮箱地址
# 邮箱第三方登录用的授权码, 在对应的邮箱中进行设置开启
EMAIL_HOST_PASSWORD = 'hjh2015190304' # EMAIL_HOST_USER的第三方登录授权码, 并非邮箱登录密码, 需要在邮箱中进行设置
EMAIL_FROM = 'eget_administrator@163.com' # 发件人邮箱

  2. 发送邮件代码:一般使用封装了EmailMessage类的两个函数进行邮件发送,django.core.mail中的send_mail()和send_mass_mail(),关于二者的区别此处不赘述,可另查阅资料。

问题记录 (先简单记录发现过程及解决方案,有时间再重新整理)

1.如图所示:

如上错误信息,stackoverflow给出的回答:django2.1 send email fail:ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:833)。同时附上一篇关于“发邮件的服务器端口号”来简单介绍smtp服务器的端口号及使用出错原因,还有一篇常用邮箱服务器地址(smtp、pop3)及端口号介绍,还有一篇电子邮件服务器扫盲——百度百科。

2. 关于django发送邮件的内容形式:纯文字、html。先奉上查到的解决方案:django发送html邮件django发送html邮件总结(详细)、django发送邮件官网文档翻译(已采用)

反面教材:如下代码中嵌入了html却没能按照预期的设想得到想要的结果,而是如图(滑稽.png)

     subject = ''
message = ''
if verify_type == 0:
subject = '欢迎注册易得比价网:'
message = '请点击以下链接以激活您的账号:\n <a href="http://127.0.0.1:8000/users/activate/' + code + \
'" target="_blank">激活账号</a>'
elif verify_type == 1:
subject = '修改密码:'
message = '请点击以下链接以修改密码:\n <a href="http://127.0.0.1:8000/users/chpwd/' + code + \
'" target="_blank">修改密码</a>'
elif verify_type == 2:
subject = '换绑邮箱:'
message = '请点击以下链接以换绑邮箱:\n <a href="http://127.0.0.1:8000/users/chemail/' + code + \
'" target="_blank">换绑邮箱</a>'
# 前四个参数是必填项
send_mail(subject=subject, message=message, from_email=EMAIL_FROM, recipient_list=[email], fail_silently=False)

3. 链接生效时间设置:规定时间内访问链接有效,超过规定时间则失效

4. 在注册账号后,发现需要等待执行完发送邮件的代码才能进行下一步,用户体验糟糕,因此需要实现异步发送邮件,正在找资料……

毕业设计——Django邮件发送功能实现及问题记录的更多相关文章

  1. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  2. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  3. redmine邮件发送功能配置详解

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  4. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  5. shell邮件发送功能实现

    本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...

  6. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  7. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  8. System.Net邮件发送功能踩过的坑

    System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...

  9. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

随机推荐

  1. 开启远程桌面连接windows的方法以及遇到的问题

    确认电脑的远程服务是否已经开启 开始--运行--输入“services.msc ”,打开服务,找到三个remote desktop开头的服务 Remote Desktop Configuration. ...

  2. 编辑器之神-vim的使用

    vim即vi的升级版:在linux中,vi是vim的软链接,我们敲vi和vim出来的都是vim: 纯手打,如有错误,敬请指出. vi的三种模式及简单使用 vi三种模式 命令模式(默认):是文件的入口, ...

  3. pytorch识别CIFAR10:训练ResNet-34(微调网络,准确率提升到85%)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过训练准确率只达到80%. 这里对网络做点小修改,在最开始的 ...

  4. Centos7 启动指定docker容器报错

    今天做docker实验时,把docker镜像pull下后,启动报如下错误: 错误信息:WARNING: IPv4 forwarding is disabled. Networking will not ...

  5. Django-4 视图层

    视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...

  6. JS学习笔记:(二)回流和重绘

    在搞清楚回流和重绘的概念之前,我们要清除浏览器的渲染过程. 解析生成DOM Tree(此时包含所有节点,包括display:none); 根据CSS Object Module(CCSSOM)计算节点 ...

  7. springmvc的前端控制器

    <servlet> <servlet-name>xxx</servlet-name> <servlet-class>org.springframewor ...

  8. for循环增强

    for(声明语句 : 表达式) { //代码句子 } 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语句块,其值与此时数组元素的值相等. 表达式:表达式是要访问的 ...

  9. Spring Mybatis多数据源配置范例

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. HDU 2586 How far way?

    传送门 继续水板子题... #include <bits/stdc++.h> using namespace std; inline int read() { , f = ; char c ...