我正在试验 Flask-Security,但在发送确认电子邮件时遇到了一些问题。我最终通过删除 flask_security/utils.py 中的一行来修复它。我删除了第 387 行,强制烧瓶邮件使用 app.config 的邮件发件人。
386: msg = Message(subject,
387: sender=_security.email_sender,
388: recipients=[recipient])
Run Code Online (Sandbox Code Playgroud)
在删除之前,代码将在flask_mail.py,@第105 行(在sanatize_address 方法内)中失败,因为传入的addr 只是一个字符串,而不是元组。
102: def sanitize_address(addr, encoding='utf-8'):
103: if isinstance(addr, string_types):
104: addr = parseaddr(force_text(addr))
105: nm, addr = addr
Run Code Online (Sandbox Code Playgroud)
我希望能够运行我的代码而不必在每次安装时修改 flask_security/utils.py。有什么建议?我的配置中可能缺少一个步骤,但我无法从flask-security 的文档中分辨出来(它们有点有限)。
感谢您的帮助,下面是我的示例应用程序。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_security import Security, SQLAlchemyUserDatastore, \
UserMixin, RoleMixin, login_required
import flask_security.utils
import flask_mail
# Create app
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'super-secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
# Flask-Security Config …Run Code Online (Sandbox Code Playgroud)