我正在使用烧瓶邮件从app发送邮件。我正在做这样的事情:
app = Flask(__name__)
app.config.update(
MAIL_SERVER='smtp.gmail.com',
MAIL_PORT=465,
MAIL_USE_SSL=True,
MAIL_USERNAME = 'your@gmail.com',
MAIL_PASSWORD = 'yourpassword'
)
mail = Mail(app)
但我不希望我的密码在我的代码中可见。我想加密它,例如。我可以存储在数据库中,但我仍然没有得到如何保持加密,因为我需要解密它来设置MAIL_PASSWORD属性。
答案 0 :(得分:1)
您的应用必须能够访问您的明文密码,因此在服务器遭到入侵的情况下加密它是无用的。
加密可能很有用(但我不建议)如果你想将它保存在公共场所(例如github上的代码)然后你只给应用程序的密钥(例如使用非跟踪文件)或在环境变量中。)
由于您必须给您的应用程序一些秘密,我建议您只是将电子邮件密码作为秘密。
例如,使用名为local_settings.py
的文件,您可以执行此操作:
# local_settings.py
MAIL_PASSWORD = 'mypassword'
# app.py
...
import local_settings
app = Flask(__name__)
app.config.update(
MAIL_SERVER='smtp.gmail.com',
MAIL_PORT=465,
MAIL_USE_SSL=True,
MAIL_USERNAME = 'your@gmail.com',
MAIL_PASSWORD = local_settings.MAIL_PASSWORD
)
mail = Mail(app)
答案 1 :(得分:0)
使用环境变量是一个不错的选择(对于邮件密码,数据库密码,......)。例如:
import os
app = Flask(__name__)
app.config.update(
MAIL_SERVER='smtp.gmail.com',
MAIL_PORT=465,
MAIL_USE_SSL=True,
MAIL_USERNAME = 'your@gmail.com',
MAIL_PASSWORD = os.environ['MAIL_PASSWORD']
)
mail = Mail(app)
您可以使用
为每次运行脚本设置MAIL_PASSWORD
环境变量的值
export MAIL_PASSWORD="{your_mail_password}"
set MAIL_PASSWORD="{your_mail_password}"
不应该在文件中使用纯文本来存储密码