zoukankan      html  css  js  c++  java
  • Python Flask-Mail环境变量配置

    近期在学习《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系统,以此为示例进行演示:

    image

    这里要注意的是,所配置的属性值是不需要加尖括号<>以及引号的,直接赋值即可,如 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设置环境变量:

    image

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

    image

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

    image

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

  • 相关阅读:
    Reverse Integer
    Reverse Bits
    Number of 1 Bits
    House Robber
    02-线性结构1. 一元多项式求导 (25)
    01-复杂度2. Maximum Subsequence Sum (25)
    <转载>使CSS文字图片div元素居中方法之水平居中的几个方法
    <转载>div+css布局教程之div+css常见布局结构定义
    15个必须知道的chrome开发者技巧
    <转载>Div+Css布局教程(-)CSS必备知识
  • 原文地址:https://www.cnblogs.com/Unikfox/p/9557790.html
Copyright © 2011-2022 走看看