美文网首页
Flask发送邮件-狗书第二版第六章

Flask发送邮件-狗书第二版第六章

作者: MillChen | 来源:发表于2019-08-20 16:34 被阅读0次

最近在学《Flask Web开发:基于Python的Web应用开发实战》(第二版)中的第六章,遇到了一些问题,在此记录一下:

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')  #或者直接使用授权码'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邮箱服务器,所以MAIL_SERVER是smtp.qq.com
  2. MAIL_PASSWORD并不是qq邮箱密码,而是使用授权码,进入邮箱>账户>POP3/IMAP/SMTP/Exchange/CardAV/CalDAV服务,开启POP3/SMTP服务,按照qq邮箱的提示开启POP3/SMTP服务。这里直接使用QQ邮箱密码会报535错误。
  3. 代码中使用的MAIL_USERNAME和MAIL_PASSWORD的值是在环境变量中读取的,因为是临时环境变量,所以必须要在同一个Terminal窗口下执行(mac):
export MAIL_USERNAME='16***6935@qq.com'  
export MAIL_PASSWORD='zqx****txnpdfbej'  
export FLASKY_RECEIVER='1500****76@qq.com'

其中MAIL_USERNAME是发送者邮箱账户名,MAIL_PASSWORD是发送者邮箱账户授权密码,FLASKY_RECEIVER是用于接收的邮箱。考虑到自己写的项目只是本地学习和验证,为了方便,可以将这些密码直接写在代码中,就像注释那样。

  1. 建议直接通过下面代码启动服务器:
if __name__ == '__main__':
    app.run(debug=True)

通过以下命令启动web服务器并不方便:

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

其余代码和书中相同。
结果:
如果使用环境变量的方式,则先在Pycharm自带的Terminal下面执行:

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

然后,启动服务器:python hello.py
在web页面中输入user

图片.png
然后QQ邮箱就会收到邮件:
图片.png
参考代码

相关文章

网友评论

      本文标题:Flask发送邮件-狗书第二版第六章

      本文链接:https://www.haomeiwen.com/subject/dafpsctx.html