_external=True 在 flask_mail 中是啥意思?

Posted

技术标签:

【中文标题】_external=True 在 flask_mail 中是啥意思?【英文标题】:What does _external=True mean in flask_mail?_external=True 在 flask_mail 中是什么意思? 【发布时间】:2020-04-19 14:47:12 【问题描述】:
import os
import secrets
from PIL import Image
from flask import url_for, current_app
from flask_mail import Message
from app import mail


def save_picture(form_picture):
    random_hex = secrets.token_hex(8)
    f_name, f_ext = os.path.splitext(form_picture.filename)
    picture_fn = random_hex + f_ext
    picture_path = os.path.join(current_app.root_path, 'static/profile_pics', picture_fn)
    output_size = (125, 125)
    i = Image.open(form_picture)
    i.thumbnail(output_size)
    i.save(picture_path)
    return picture_fn

def send_reset_email(user):
    token = user.get_reset_token()
    msg = Message('Password Reset Request', sender='noreplies@diemo.hr', recipients=[user.email])
    msg.body = f''' To reset your password, visit the following link:
url_for('users.reset_token', token=token, **_external=True**)
If you did not make this request then simply ignore this email and no changes will be made
    '''
    mail.send(msg)

我正在制作一个 Flask 应用程序并学习如何使用 flask_mail 模块发送重置电子邮件,所以我想知道当我将重置链接放在邮件正文上时 _external=True(send_reset_email 函数) 是什么意思。我在谷歌上搜索过,但我没有找到任何东西。提前谢谢你。

【问题讨论】:

【参考方案1】:

_external=True 告诉 Flask 它应该生成一个绝对 URL,而不是相对 URL。例如,https://example.com/my-page 是绝对 URL,而 /my-page 是相对 URL。由于您正在发送电子邮件,因此指向您网站中某个页面的相对 URL 将不起作用。

您可以在此处查看url_for 的文档:https://flask.palletsprojects.com/en/1.1.x/api/#flask.url_for

_external – 如果设置为 True,则生成一个绝对 URL。服务器地址可以通过 SERVER_NAME 配置变量更改 回退到 Host 标头,然后到请求的 IP 和端口。

【讨论】:

以上是关于_external=True 在 flask_mail 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 编译链接错误:unresolved external symbol

NativeScript 遇到致命错误:Uncaught ReferenceError: __UI_USE_EXTERNAL_RENDERER__ is not defined

基于external version进行乐观锁并发控制

html 将target =“_ blank”更改为rel =“external”

LNK2001 unresolved external symbol _winmain@16

error LNK2001: unresolved external symbol __imp__WSAStartup@8 SOCKET(转)