Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为使用Flask发送的电子邮件创建安全的取消订阅链接_Python_Email_Flask - Fatal编程技术网

Python 为使用Flask发送的电子邮件创建安全的取消订阅链接

Python 为使用Flask发送的电子邮件创建安全的取消订阅链接,python,email,flask,Python,Email,Flask,我想生成一个退订链接,用户可以在收到电子邮件时单击该链接以退订该地址。我不想只在链接中包含电子邮件,因为用户可以编辑链接以取消订阅其他人。我看到的大多数电子邮件都会生成某种令牌,网站知道如何将令牌与用户匹配。如何使用Flask生成这样的令牌 for email in email_lst: body = 'unsubscribe link with token' msg.attach(MIMEText(body, 'html')) more code to se

我想生成一个退订链接,用户可以在收到电子邮件时单击该链接以退订该地址。我不想只在链接中包含电子邮件,因为用户可以编辑链接以取消订阅其他人。我看到的大多数电子邮件都会生成某种令牌,网站知道如何将令牌与用户匹配。如何使用Flask生成这样的令牌

for email in email_lst:
      body = 'unsubscribe link with token'
      msg.attach(MIMEText(body, 'html'))
      more code to send email

Flask包括用于通过对序列化数据进行安全签名来生成令牌的库

对于每封电子邮件,为要取消订阅的电子邮件生成一个令牌,并创建一个
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
    ...
从其危险的导入URLSafeSerializer,BadData
@app.route(“/unsubscribe/”)
def取消订阅(令牌):
s=URLSafeSerializer(app.secret\u key,salt='unsubscribe')
尝试:
email=s.loads(令牌)
除不良数据外:
#显示错误
...
#退订
...
def send_email():
s=URLSafeSerializer(app.secret\u key,salt='unsubscribe')
令牌=s.dumps(user.email)
url=url\u用于('unsubscribe',token=token)
#将url添加到您的邮件中
...
由于令牌已签名,用户可以看到数据,但在不使令牌无效的情况下无法更改数据