毕业设计——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 ...
随机推荐
- 光盘安装win7系统教程
光盘安装系统是最传统的安装系统的方法,虽然现在U盘安装和硬盘安装已经很方便,但仍有很多用户习惯光盘安装的方式,下面小编教大家如何利用光盘安装系统. 来源:https://www.haoxitongx. ...
- RabbitMQ框架构建系列(二)——RabbitMQ基础知识介绍
上一篇记录了一下AMQP协议,RabbitMQ是一个Erlang开发的AMQP协议的开源实现.这一篇简单的介绍一下RabbitMQ的基本原理. 一.RabbitMQ的特点 1.可靠性:RabbitMQ ...
- python学习笔记5_异常
python学习笔记5_异常 1.什么事异常 Python使用异常对象(exception object) 来表示异常情况.遇到错误会发生异常. 如果异常对象未被处理或被捕捉,程序就会用所谓的回溯(t ...
- codeforces 1064套题
a题:题意就是问,3个数字差多少可以构成三角形 思路:两边之和大于第三遍 #include<iostream> #include<algorithm> using namesp ...
- ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)
关心最多的问题,不FQ能不能用,答案是能.Google官方提供额外的域名来提供服务,国内可以正常使用. 一. 前言 验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码.刷票.论坛灌水.刷注册等 ...
- vmware workstation安装教程以及其中出现的错误解决方法
VMware Workstation 安装教程 1 下载好虚拟机,然后运行,点击下一步 2 选择我接受,下一步 3 选择安装的位置,可以自己选择,也可以默认不更改,这个无影响(图中I:\下面的VM ...
- Object 与 T的差别 导致swagger 的model 显示的数据为空
情景复现: 在整合swagger的时候,自己对原本定于的Object的data做了修改,把Object修改为了T,data的set方法的返回类型由于编译器没有报错,就没有去做修改, 这个时候就导致了, ...
- vue 倒计时组件
<template> <span> <i v-text="msg"></i> </span></template& ...
- Quill 富文本编辑器
Quill 富文本编辑器 https://quilljs.com/ https://github.com/quilljs/quill https://github.com/quilljs/awesom ...
- 2019-04-04 Mybatis学习知识点
1. 比较#和$的区别 #是占位符?,$是字符串拼接.因此使用$的时候,如果参数是字符串类型,那么要使用引号 尽量使用#而不是$ 当参数表示表名或列名的时候,只能使用$ 2. 多参数时候 配置文件中使 ...