码迷,mamicode.com
首页 > 编程语言 > 详细

Python Flask-Mail环境变量配置

时间:2018-08-30 01:55:33      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:计算机系   技术   text   os x   isp   用户   display   产生   一点   

近期在学习《Flask Web开发:基于Python的Web应用开发实战》 一书邮件章节时,在配置上遇到了一个问题,经查阅资料摸索后找到了解决方法。在此总结一下,如大家在学习中有类似疑惑也希望能给大家提供一点帮助。

书中介绍了一种基于环境变量的配置方法,通过将一些敏感数据信息(如邮箱用户名和密码等)以环境变量的形式进行保存,然后使用时再由os模块进行调取。这种配置方法通常使用于开源项目中,以确保信息的安全性且便于系统的管理。

书中具体配置方法

①在 Linux 或 Mac OS X 中使用bash设定环境变量:
(venv) $ export MAIL_USERNAME=<mail username>
(venv) $ export MAIL_PASSWORD=<mail password>
②在Windows 中使用command命令设定环境变量:
(venv) $ set MAIL_USERNAME=<mail username>
(venv) $ set MAIL_PASSWORD=<mail password>

由于本人使用的是windows系统,以此为示例进行演示:

技术分享图片

这里要注意的是,所配置的属性值是不需要加尖括号<>以及引号的,直接赋值即可,如 set MAIL=abc@example.com

这样一来,按照书中的方法就配置好了,但我们在实际测试发邮件脚本中发现并没有任何效果,后经调试得知环境变量并没有成功配置,通过os调取的是None值,也正是此原因产生了Error

# 测试脚本( send_test.py )
from flask_mail import Message
from hello import *
msg = Message(test subject, sender=app.config[MAIL_USERNAME],recipients=[‘other@email.com])
msg.body = text body
msg.html = <b>HTML</b> body
with app.app_context():
    mail.send(msg)

# 查看环境变量值
print(os.environ.get(MAIL_USERNAME))    # None
print(os.environ.get(MAIL_PASSWORD))    # None

那这是为什么呢?这还得回到command命令。其实,设置环境变量的命令有两种,一种是set,另一种是setx。这两种长得差不多,其功能差异也不大,但非常关键。

set命令设置环境变量

set设置的环境变量又称为临时环境变量,即其设置的环境变量有效期只在本窗体内,在另一窗体或程序中就自然而然失效了

基本语法:set key=value

setx命令设置环境变量

setx为set的一种升级,其用于设置永久环境变量,即系统环境变量,这样可以确保变量在任何地方都可使用

基本语法:setx key value  (注意没有’=’号)

所以这么一看来,我们如果想通过另一个程序或脚本来发送邮件,需要使用setx设置环境变量:

技术分享图片

这样一来基本上就可以了,不过本人实测发现结果还是为None值,这也纳闷了,查阅资料发现也没什么问题。后猜想可能是电脑原因,需要重启以“激活”环境变量,结果重启后再次尝试就成功了,如图:

技术分享图片

当然,其实除了使用命令来配置环境变量外,也可以手动配置:计算机系统/高级系统设置/高级/环境变量,具体配置这里不再详述,不太明白的地方可以自行到网上搜索

技术分享图片

以上便是本次关于配置flask-mail用户名和密码的一些经验分享,有任何疑问或见解欢迎大家在评论区留言相互学习。

Python Flask-Mail环境变量配置

标签:计算机系   技术   text   os x   isp   用户   display   产生   一点   

原文地址:https://www.cnblogs.com/Unikfox/p/9557790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!