毕业设计——Django邮件发送功能实现及问题记录
django发送邮件:send_mail()&send_mass_mail()
步骤 :
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邮件发送功能实现及问题记录的更多相关文章
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇
在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...
- redmine邮件发送功能配置详解
redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...
- .NET开发邮件发送功能
.NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知 ...
- shell邮件发送功能实现
本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...
- SpringBoot 2.X从0到1实现邮件发送功能
Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...
- spring-boot-route(二十二)实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...
- System.Net邮件发送功能踩过的坑
System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
随机推荐
- WSUS补丁下载速度慢解决办法
windows 2008r2 如果是 WSUS 3.0并使用 Windows Internal Database(默认安装) %programfiles%\Update Services\Setup\ ...
- Web前端教程3-JavaScript教程
目录 1. JavaScript介绍 1.1. JS嵌入页面的方式 2. JS基本语法 2.1. 变量类型 2.2. 获取元素方法 2.3. 操作元素属性 2.4. innerHTML的使用 3. J ...
- 类Math
概述 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单. 常用方法 ...
- 初识Haskell 五:自定义数据类型和类型类
对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 自定义数据类型 data type de ...
- 1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- C语言中结构体内存对齐
先写一个小程序: #include<stdio.h> struct student { int a; char k; short m; }; int main() { st ...
- Codeforces Round #520 (Div. 2) B. Math 唯一分解定理+贪心
题意:给出一个x 可以做两种操作 ①sqrt(x) 注意必须是完全平方数 ② x*=k (k为任意数) 问能达到的最小的x是多少 思路: 由题意以及 操作 应该联想到唯一分解定理 经过 ...
- java文件运行的过程
javac .java——>编译成.class文件(字节码) 参考: https://www.cnblogs.com/yxwkf/p/3855363.html https://www.jians ...
- 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别
简介 关系型数据库管理系统(RDBMS)是建立在关系模型基础上的数据库,主要代表有:Microsoft SQL Server,Oracle,MySQL(开源). 非关系型数据库(NoSQL),主要代表 ...
- foreach 中获取索引index的方法
一样,很少用到,记下来先 主要代码: foreach (var item in arr) { int index = arr.indexOf(item); //index 为索引值 }