標籤:電腦系 技術 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環境變數配置