Flask發(fā)送郵件-狗書第二版第六章

最近在學(xué)《Flask Web開發(fā):基于Python的Web應(yīng)用開發(fā)實戰(zhàn)》(第二版)中的第六章,遇到了一些問題,在此記錄一下:

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 25
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')  #或者直接使用郵箱
#app.config['MAIL_USERNAME'] = '16***935@qq.com'
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')  #或者直接使用授權(quán)碼'zqx****txnpdfbej'
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] = 'Administrator Chen <16***6935@qq.com>' #這里的郵箱要和MAIL_USERNAME一樣,否則會報錯
app.config['FLASKY_RECEIVER'] = os.environ.get('FLASKY_RECEIVER')  #或者直接使用'1500****76@qq.com',這里的郵箱是接收者郵箱

這里需要注意的坑有:

  1. 代碼中使用的是qq郵箱服務(wù)器,所以MAIL_SERVER是smtp.qq.com
  2. MAIL_PASSWORD并不是qq郵箱密碼,而是使用授權(quán)碼,進入郵箱>賬戶>POP3/IMAP/SMTP/Exchange/CardAV/CalDAV服務(wù),開啟POP3/SMTP服務(wù),按照qq郵箱的提示開啟POP3/SMTP服務(wù)。這里直接使用QQ郵箱密碼會報535錯誤。
  3. 代碼中使用的MAIL_USERNAME和MAIL_PASSWORD的值是在環(huán)境變量中讀取的,因為是臨時環(huán)境變量,所以必須要在同一個Terminal窗口下執(zhí)行(mac):
export MAIL_USERNAME='16***6935@qq.com'  
export MAIL_PASSWORD='zqx****txnpdfbej'  
export FLASKY_RECEIVER='1500****76@qq.com'

其中MAIL_USERNAME是發(fā)送者郵箱賬戶名,MAIL_PASSWORD是發(fā)送者郵箱賬戶授權(quán)密碼,F(xiàn)LASKY_RECEIVER是用于接收的郵箱??紤]到自己寫的項目只是本地學(xué)習(xí)和驗證,為了方便,可以將這些密碼直接寫在代碼中,就像注釋那樣。

  1. 建議直接通過下面代碼啟動服務(wù)器:
if __name__ == '__main__':
    app.run(debug=True)

通過以下命令啟動web服務(wù)器并不方便:

export FLASK_APP=hello.py
export FALSK_DEBUG=1
flask run

其余代碼和書中相同。
結(jié)果:
如果使用環(huán)境變量的方式,則先在Pycharm自帶的Terminal下面執(zhí)行:

export MAIL_USERNAME='16***6935@qq.com'  
export MAIL_PASSWORD='zqx****txnpdfbej'  
export FLASKY_RECEIVER='1500****76@qq.com'

然后,啟動服務(wù)器:python hello.py
在web頁面中輸入user

圖片.png

然后QQ郵箱就會收到郵件:
圖片.png

參考代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容