在WEB開發時,咱們經常會使用到發送郵件的功能,註冊時或者更換密碼時,須要驗證郵箱,在flask的擴展中有Flask-mai來幫助完成這一功能html
flask-mail發送郵件須要你提供你的郵箱帳號和密碼。某些配置是發送郵箱所必須的·。大部分flask初學者通常沒有云主機和域名來搭建郵箱服務器,因此咱們只能使用qq等郵件服務商給你的郵箱
這裏介紹瞭如何配置郵箱的config
開發在mail文件夾中python
#/app/config
MAIL_SERVER = 'smtp.qq.com'
MAIL_PORT = 465
MAIL_USE_TLS = False
MAIL_USE_SSL = True
# 注意此處,不少人配置發不出去和這個是有關係的
MAIL_PASSWORD = '**********'
MAIL_USERNAME = '********@qq.com'
此處以qq郵箱爲例子,咱們填入了qq郵箱的服務器地址,他的郵箱服務的端口,TLS,SSL的選擇–這是不少人發不出去郵件的關鍵之一,帳號和密碼–發不出去郵箱的另外一個關鍵!
QQ郵箱是使用SSL的,而後注意QQ郵箱此處的密碼不是你的qq密碼!!
不是你的QQ密碼!!
。。我在這個坑陷了好久~~好久 ~~好久·
這個密碼你登錄qq郵箱,選擇設置,而後點擊帳號
郵箱的密碼就是此處的受權碼填入後的給你的密碼。
126等郵箱發不出去也是由於其有本身的設置。flask
實現咱們須要一個app實例服務器
#/usr/bin/env python
# mail/app.py
from flask import Flask
from flask_mail import Mail, Message
from threading import Thread
app = Flask(__name__)
mail = Mail(app)
def send_async_email(app,msg):
with app.app_context():
mail.send()
def SendMail():
msg = Message('test',sender='***@qq.com',\
recipients=["***@example.com"])
#recipients是個列表,包含全部收件人
#此處的test是郵箱的主題,sender和config中的MAIL_USERNAME要一致哦
msg.body = 'testbody'
msg.html = '<b>test</b>body'
#郵件發送給目標,能夠有文本,兩種方式呈現,你能看見怎樣的取決於你的客戶端
thr = Thread(target=send_async_email,args=[app,msg])
#使用多線程,在實際開發中,如果不使用異步、多線程等方式,網頁會卡住
thr.start()
return 'ok'
在當前文件夾使用pythonmarkdown
>>from app import SendMail
>>SendMail()
郵件就會成功發出去啦多線程
在具體實踐中,發送郵箱會被抽象成一個函數,msg的body和html形式通常會使用flask的render_tempalte來渲染
發送大量郵件時,QQ、126郵箱服務器頗有可能認爲你在發送垃圾郵件所以發不出去。
生產環境時應當使用本身搭的郵箱服務器,或者郵箱服務商提供的企業郵箱app
flask-login中文文檔 http://www.pythondoc.com/flask-mail/異步