Python Flask-Mail環境變數配置

來源:互聯網
上載者:User

標籤:電腦系   技術   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 [email protected]

這樣一來,按照書中的方法就配置好了,但我們在實際測試發郵件指令碼中發現並沒有任何效果,後經調試得知環境變數並沒有成功配置,通過os調取的是None值,也正是此原因產生了Error

# 測試指令碼( send_test.py )from flask_mail import Messagefrom 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‘))    # Noneprint(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環境變數配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.