1.注册网易邮箱网易免费邮箱 - 你的专业电子邮局 (163.com)

2.点击右上角的”回到旧版“

3.点击 设置中 ”POP3/SMTP/IMAP“配置

4. 开启两个服务,并添加授权码,需要验证短信,一步一步添加

5..打开django根目录Setting.py配置文件:
填写自己的邮箱账号和授权码


EMAIL_HOST = 'smtp.163.com' EMAIL_PORT = 25 EMAIL_USE_TLS = True # 这里替换自己的邮箱授权码和账号 EMAIL_HOST_USER = '182******51@163.com' EMAIL_HOST_PASSWORD = 'FYXJ******ZKH' EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
6.写视图函数


源码:
from django.core.mail import send_mail
from django.shortcuts import render
from django.template import loader
from User.models import User
# 我用163邮箱做了一个密码找回
def find_password(request):
if request.method == 'POST':
# 这是由html表单提交过来需要查找密码的邮箱。
email = request.POST.get('email')
# 我利用对数据库的条件查找,查找存在该邮箱的User 对象,返回的是一个列表,所以默认选第一条.frist
users = User.objects.filter(email=email).first()
user = users.user # 取这个对象的user,这边是账号
password = users.userpw # 取这个对象的userpw,这边是密码
# 邮件的大标题
subject = '项目名:某项目平台'
# 渲染模板需要的数据,
data = {
'username': user,
'active_url': password,
}
# 准备一个模板(html,邮件的样式/格式),渲染准备的数据,比如:每份邮件不同的收件人等
html_mes = loader.get_template('index_find_password.html').render(data)
# 自己发邮件的账号
from_mail = '182*******51@163.com'
# 发送的邮箱账号
re_mail_list = [email]
send_mail(subject=subject, message='wei', html_message=html_mes, from_email=from_mail,
recipient_list=re_mail_list)
error_msg = '已发送您的邮箱,请注意查收'
return render(request, "index_user_login.html", {
'error_msg': error_msg,
})
7.html邮件模板:

html模板源码:
<h2 style="color: black;font-weight: bold;">尊敬的:{{ username }},您好!</h2>
<br>
您的密码已找回:<br>
<br>
<p>您的密码在这里: <b style="color: #00aced">{{ active_url }}</b></p>
<p>
请勿直接回复该邮件</p>
<p>
请勿直接回复该邮件</p>
<p>
请勿直接回复该邮件</p>
<p align="right">
21软件 吴**
<br>
此为系统邮件请勿回复
</p>
8.密码找回表单提交

9.实验:
9.1输入邮箱账号

9.2 点击发送

9.3登录该qq邮箱验证


对比数据库:

!!!!!!!!!!!
本次实验未做数据库邮箱不存在的情况,如果输入不存在的邮箱,会报错不存在Users.user
!!!!!!如果需要做不存在的情况就加个判断就好了:

非常简单
完整源码:
from django.core.mail import send_mail
from django.shortcuts import render
from django.template import loader
from User.models import User
# 我用163邮箱做了一个密码找回
def find_password(request):
if request.method == 'POST':
# 这是由html表单提交过来需要查找密码的邮箱。
email = request.POST.get('email')
# 我利用对数据库的条件查找,查找存在该邮箱的User 对象,返回的是一个列表,所以默认选第一条.frist
users = User.objects.filter(email=email).first()
if users:
# 存在的情况
# 就将后面的所有代码考进来即可。
user = users.user # 取这个对象的user,这边是账号
password = users.userpw # 取这个对象的userpw,这边是密码
# 邮件的大标题
subject = '项目名:某项目平台'
# 渲染模板需要的数据,
data = {
'username': user,
'active_url': password,
}
# 准备一个模板(html,邮件的样式/格式),渲染准备的数据,比如:每份邮件不同的收件人等
html_mes = loader.get_template('index_find_password.html').render(data)
# 自己发邮件的账号
from_mail = '182*******151@163.com'
# 发送的邮箱账号
re_mail_list = [email]
send_mail(subject=subject, message='wei', html_message=html_mes, from_email=from_mail,
recipient_list=re_mail_list)
error_msg = '已发送您的邮箱,请注意查收'
return render(request, "index_user_login.html", {
'error_msg': error_msg,
})
else:
# 不存在的情况
error_msg = '该邮箱不存在,请重试!'
return render(request, "index_user_login.html", {
'error_msg': error_msg,
})
3万+

被折叠的 条评论
为什么被折叠?



