【Flask/跟着学习】Flask大型教程项目#09:电子邮箱

跟着学习(新版):https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-x-email-support
回顾上一章:https://blog.csdn.net/weixin_41263513/article/details/85057156

本章内容

  • Flask-Mail简单介绍
  • 发送电子邮件
  • 重置密码的准备工作
  • 密码重置令牌
  • 发送密码重置的邮件
  • 重置用户密码
  • 异步发送电子邮箱
  • 发送qq邮箱

很多类型的应用都需要在特定事件发生时通知用户,而常用的通信方法是电子邮箱。在本章中,我将为忘记密码的用户添加密码重置功能。 当用户请求重置密码时,应用程序将发送包含特制链接的电子邮件。 然后,用户需要单击该链接以访问用于设置新密码的表单。

Flask-Mail简单介绍

发送电子邮箱而言,flask有一个名为Flask-Mail的流行扩展,可以使任务变得非常简单,记得用pip install一下
而密码重置链接中将包含安全令牌,为了生成令牌,我将使用JSON Web令牌,他也有一个流行的python包,这个需要pip install pyjwt

Flask-Mail扩展使从app.config对象配置的
文件:/app/–init–.py

# ...
from flask_mail import Mail

app = Flask(__name__)
# ...
mail = Mail(app)

如果您希望发送真实的电子邮件,则需要使用真实的电子邮件服务器。 如果您有一个,那么您只需要为它设置MAIL_SERVER,MAIL_PORT,MAIL_USE_TLS,MAIL_USERNAME和MAIL_PASSWORD环境变量

发送电子邮件

我们先写一个发送发送地安仔邮箱的辅助函数
文件:/app/email.py

from flask_mail import Message
from app import mail

def send_email(subject, sender, recipients, text_body, html_body):
    msg = Message(subject, sender=sender, recipients=recipients)
    msg.body = text_body
    msg.html = html_body
    mail.send(msg)

sender:发送人
recipients:收件人
发送电子邮件内容只需要会用就可以,之后我会教大家怎么设置这些参数

重置密码的准备工作

正如我上面提到的,我希望用户可以选择重置密码。 为此,我将在登录页面中添加一个链接:
文件:/app/templates/login.html

<p>
	Forgot Your Password?
	<a href="{
  { url_for('reset_password_request') }}">Click to Reset It</a>
</p>

当用户单击该链接时,将出现一个新的Web表单,该表单请求用户的电子邮件地址作为启动密码重置过程的方法。 以下是表单类:
文件:/app/forms.py

class ResetPasswordRequestForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email()])
    submit = SubmitField('Request Password Reset')

以下是相应的HTML模板
文件:/app/templates/reset_password_request.html

{% extends "base.html" %}

{% block content %}
    <h1>Reset Password</h1>
    <form action="" method="post"&g
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值