在跟着《Flask Web開發:基於Python的Web應用開發實戰》一書學習時,出現了以上錯誤提示。
問題出於第11章——博客文章。當運行
python manage.py runserver
后,在瀏覽器中打開localhost:5000,進入博客首頁,然后在右上角點擊login,然后點擊register。填寫注冊信息后,系統會發送一封確認注冊信息的電子郵件到注冊的郵箱,但進入注冊郵箱查看,並未收到郵件,然后查看runserver服務器返回的信息,除了上面有一長串的返回信息及錯誤文件路徑外,最下面的,就是本文標題中所出現的錯誤提示,完整提示如下:
SMTPSenderRefused: (530, ‘5.5.1 Authentication Required. Learn more at \n5.5.1 https://support.google.com/mail/answer/14257 f14sm8290713ioi.2 – gsmtp’, ‘Flasky Admin <flasky@example.com>’)
而如果注冊信息沒有能從郵箱中確認,則書本后續的代碼效果將無法進行查看,即所寫代碼將無從驗證。因此該問題必須解決,方可進行下一步學習。
由以上錯誤提示可知,系統要求認證,對用於發送郵件的賬號的認證。我們要做的,即是找出SMTP的配置信息。查看代碼目錄,可在flask根目錄中發現有一個名為config.py的文件,明顯該文件即配置信息所在。由於我們學習時,曾進行git checkout操作用書本源碼替換掉自己的代碼,因此懷疑錯誤即由作者的配置與我本機(郵件賬戶)信息不一致所至。因此打開該文件進行編輯:

上圖中8-15行即為基本配置信息,可看到作者的默認配置為gmail的配置:
MAIL_SERVER = ‘smtp.googlemail.com’
MAIL_PORT = 587
最重要的在於這兩行配置,前者設置了郵件服務器地址,后者為郵件服務器端口。因在大陸使用gmail容易出問題,因此我們應改為國內的郵件服務器進行測試學習。我將其改為新浪郵箱服務器的地址和默認端口:
MAIL_SERVER = ‘smtp.sina.com’
MAIL_PORT = 25
config.py配置文件中,第11/12/15行分別為管理員賬戶(即你是用這個郵箱賬戶發郵件給注冊人的)的信息,即用於認證的信息。所以郵件服務器改完后,還應該配置這幾行信息。配置方法在書本第6章——電子郵件中有說明,可參考第60頁和第62頁。
以上修改完畢后,再運行
python manage.py runserver
然后再點擊發送電子郵件,就可以在注冊郵箱中收到驗證郵件了。注意查看垃圾箱
