lea*_*ces 4 python email flask
我想生成一个取消订阅链接,用户可以在收到取消订阅该地址的电子邮件时单击该链接。我不想只在链接中包含电子邮件,因为用户可以编辑链接以取消订阅其他人。我看到的大多数电子邮件都会生成某种令牌,并且该站点知道如何将令牌与用户匹配。如何使用 Flask 生成这样的令牌?
for email in email_lst:
body = 'unsubscribe link with token'
msg.attach(MIMEText(body, 'html'))
more code to send email
Run Code Online (Sandbox Code Playgroud)
Flask 包含itsdangerous库,它用于通过对序列化数据进行安全签名来生成令牌。
对于每封电子邮件,为要取消订阅的电子邮件生成一个令牌,并创建一个unsubscribe接受和解码该令牌的路由,以确定要取消订阅的人。
from itsdangerous import URLSafeSerializer, BadData
@app.route('/unsubscribe/<token>')
def unsubscribe(token):
s = URLSafeSerializer(app.secret_key, salt='unsubscribe')
try:
email = s.loads(token)
except BadData:
# show an error
...
# unsubscribe
...
def send_email():
s = URLSafeSerializer(app.secret_key, salt='unsubscribe')
token = s.dumps(user.email)
url = url_for('unsubscribe', token=token)
# add the url to your message
...
Run Code Online (Sandbox Code Playgroud)
由于令牌已签名,因此用户可以查看数据,但不能在不使令牌无效的情况下更改数据。