最近在看慕课网的利用Django搭建教学网站的视频,其中碰到了给注册用户发送激活邮件的问题。期间也遇到了一些小问题,在此记录一下。

实现邮件发送流程

利用django.core.mail模块下的send_email函数

from django.core.mail import send_email

配置settings.py实现邮件功能

QQ邮箱

# email配置
# IMAP/SMTP服务
EMAIL_HOST = "smtp.qq.com"
EMAIL_PORT = 25 # 大多都是25;若使用SSL,端口号465或587
EMAIL_HOST_USER = "" #发送邮箱
EMAIL_HOST_PASSWORD = "" # 使用的是QQ的授权码,不是你的密码
EMAILE_USE_TLS = True #一定要是True,否则发不了
EMAIL_FROM = "" #邮件发送人(邮件中所显示的发送人,和EMAIL_HOST_USER同)

这里之前你需要在邮箱设置中开启服务,例如QQ邮箱有两个服务:IMAP/SMTP服务、POP3/SMTP服务,随便开起一个就行。
关于这两个服务你可以查看下QQ邮箱的帮助,点击 IMAP、POP3介绍、区别及如何使用

EMAIL_HOST_PASSWORD 注意了是第三方登录的授权码,不是你的邮箱密码。服务设置下方有授权码获取方式,如图

如果是 POP3/SMTP服务

# qq POP3/SMTP 配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 110  # 或者 995是设置了 SSL 加密方式
EMAIL_HOST_USER = '' # 同上
EMAIL_HOST_PASSWORD = ''  # 同上
EMAIL_USE_TLS = True  # 同上
EMAIL_FROM = ‘’ # 同上

新浪邮箱
同样是开启服务,获取授权码

EMAIL_HOST = 'smtp.163.com'  # 新浪 smtp 服务器地址
EMAIL_PORT = 25
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_FROM = ''
发送邮件函数send_email使用

send_email必填四个参数 Parameter 有 :subject 标题, message 主体, from_email 发送邮箱, recipient_list 邮件列表。recipient_list 是列表


# django自带的邮件发送模块
from django.core.mail import send_mailfrom LMooc.settings import EMAIL_FROMdef send_register_email(email,send_type='register'):# 实例化EmailVerifyRecord对象,将邮件内容保存到数据库,便于查询激活链接是否存在# email_record = EmailVerifyRecord()# email_record.email = email# email_record.send_type = send_type# email_record.code = random_str(20) #生成长20的随机字符串用以构成激活链接(域名/active/随机code/)# 只要编写逻辑判断激活链接中的code是否有,就可以对应user的is_active=true# email_record.save()# 发送邮件功能如下# email_title = ""邮件标题# email_body = ""主体if send_type == "register":email_title = "你想写的内容"email_body = "你想写的内容"# Parameter:subject标题, message主体, from_email发送邮箱, recipient_list邮件列表,send_status = send_mail(email_title,email_body,EMAIL_FROM,[email,]) #返回真值,判断是否发送OKif send_status:# 你想怎样pass

另外发送邮件时遇到了个bug

django.db.utils.IntegrityError: UNIQUE constraint failed: user_userprofile.username

经过分析应该是在测试注册时,验证码多次输错,但是user对象已经保存过了(username是主键吧),再次输入保存该user时报错

增加判断存在逻辑

user = UserProfile()
...
user_exist = UserProfile.objects.filter(username=request.POST.get('email',''))
if user_exist:return render(request, 'register.html', {'msg': "用户已存在"})user.save()

django自带邮件模块实现用户注册激活邮件发送相关推荐

  1. 用户注册发送激活邮件(上)

    最近跟一位前辈学习了一个简单的业务模块(用户注册时的邮箱激活),整理了一份简单的资料与大家分享,在此感谢边老师指导和广大博友们的分享,才有此篇. 由于本人实战开发经验不是很足,在下文中知识点.工程图和 ...

  2. Django中的auth模块

    1,创建超级用户 在命令行输入:python manage.py createsuperuser 2,认证校验用户名和密码(authenticate方法) 先得导入auth模块:from django ...

  3. Django-Celery异步发送激活邮件,以及注意点

    1.Celery介绍 点击查看Celery参考文档 Celery是一个功能完备即插即用的任务队列 Celery适用异步处理问题,比如发送邮件.文件上传,图像处理等等比较耗时的操作,我们可将其异步执行, ...

  4. Django(part49)--用Django自带的User模型类进行模拟登录

    学习笔记,仅供参考 用Django自带的User模型类进行模拟登录 基于上个Blog中学习的用户认证系统,我们再用Django自带的User模型类,进行模拟登录(模拟登录的意思就是没有真正的登录,不涉 ...

  5. 大话“用户注册激活,忘记密码”发送邮件功能

    鉴于最近有一部分童鞋留言关于"用户注册发送邮件激活"功能不太懂,在此我将用一片通俗易懂的话术简单说明一下"用户注册发送邮件激活"的大致原理和过程. 用户注册发送 ...

  6. Django auth用户认证模块

    Django auth用户认证模块 1.Django auth用户认证 2.Django auth用户模型 3.自定义auth用户模型 4.数据迁移 5.web开发一个应用 5.1 定义路由 1.一级 ...

  7. 带email认证的用户注册网站

    文件夹主要有两个mysite以及my_registration外加一个存放网页模板的文件夹 (一)mysite中需要改的为settings.py与urls.py urls.py中加入(r'^mysit ...

  8. Linux学习19-gitlab配置邮箱postfix(新用户激活邮件)

    前言 gitlab新增新用户有两种方式,第一种可以用户主动注册(自己设置密码):第二种也可以通过root管理员用户直接添加用户,发个邮件到用户的邮箱里,收到邮件后激活. 如果是第二种方式添加新用户的话 ...

  9. 43.Django权限系统auth模块详解

    昨天我们为了登录admin,通过命令创建了超级用户,你是不是有个疑问--这创建的超级用户的信息是存放在哪里了呢?   这就想到了我们映射数据库时,Django自动创建的一些表(这也是之前进行数据库迁移 ...

最新文章

  1. linux resin mysql_Linux下Resin JSP MySQL的安装和配置-2
  2. 简单的python爬虫实例
  3. 网络安全分析和公有云使用的安全性
  4. 【CodeForces - 219D 】Choosing Capital for Treeland (树形dp)
  5. java inject例子_java – 手动实例化@InjectMock带注释的字段
  6. oracle分区表学习及应用
  7. 【华为云技术分享】盘点物联网常用开发板
  8. BZOJ.3938.Robot(李超线段树)
  9. 如何区分家里的网线是超五类还是超六类的呢?
  10. php 隐藏路径,急!!!隐藏路径问题
  11. 19【14】DIEN:深度兴趣演化⽹络
  12. 滚动条禁止_平南人用了几十年的这种小东西,将全面禁止生产!你家还有某?...
  13. HP 5100打印机在Windows 8中的使用
  14. Apache Atlas 数据血缘
  15. Python实验、Pandas数据处理与分析
  16. 腾讯秀丽江山之长歌行服务器维护,37秀丽江山之长歌行服务器正式关服公告
  17. ChinaSoft 论坛巡礼 | 软件智能合成理论与方法
  18. 推荐一批灵活好用的管理软件
  19. 删除矮人Dos目录argh
  20. Windows、Linux下安装Maven图文教程

热门文章

  1. java中10》》2_(10*(2-8)+10)/(5-5*2)在JAVA语言中,上面的表达式计算结果为(选一项)_学小易找答案...
  2. 车载诊断系列——汽车E/E技术(Automotive E/E Technologies)
  3. oracle数据库之常用的函数练习
  4. Python小游戏——孔明棋
  5. NECCS|全国大学生英语竞赛C类|词汇和语法|词汇题|21:03~21:53
  6. 易基因:小檗碱通过介导m6A mRNA甲基化调控斑马鱼肝细胞氧化应激、凋亡和自噬|科研进展
  7. echarts 之常用的属性配置
  8. 数据采集方式有哪些,都有什么特点?
  9. contentWindow
  10. Linux结束sh脚本命令,Shell脚本break和continue命令简明教程