flask_mail纠错集合,QQ邮箱纠错集合

Flask-Mail实现邮件发送的两种方法

前言

一直跟随《Flask Web》学习,在学习到电子邮件这一章节,按照书本内容配置,超过几十次测试,仍旧报错,主要错误如下:

  • 开启QQ邮箱的SMTP服务,获取16位授权码,并在后期过程中将password设置为授权密码,错误为socket.error: [Errno 10061]
  • 在set PATH,python shell,cmd三者按照先后关系测试多次,错误为socket.error: [Errno 10061]
  • 去除hello.py无关内容,新建qq.py来测试,还是出现错误socket.error: [Errno 10061]
  • Google多个例子,从头到尾配置环境,重点是在TLS和SSL协议设置,gmail和qq.maile设置不同,具体见代码
  • 重新测试,依旧报错
  • 百度实例,最后避开在环境中配置变量,直接在python shell中赋值给用户名和密码,密码还是为“授权码”,报错:SMTPAuthenticationError:直译为简单传输协议授权错误!这个时候就怀疑授权码的时效性了,再次验证,取得新授权码,再次运行显示发送成功。(好激动,想哭有没有)

1.方法一

直接在python shell中运行代码,避开环境变量设置(安全性不足)

#qq.py
# -*- coding: utf-8 -*-
#自行安装flask_mail模块

from flask import Flask
from flask_mail import Mail,Message

app = Flask(__name__)

app.config["MAIL_SERVER"]="smtp.qq.com"
app.config["MAIL_PORT"]=465#25为gmail,qq不适用,常用465或者587
app.config['MAIL_USE_SSL'] = True
app.config["MAIL_USERNAME"]="16xxx1327@qq.com"("MAIL_USERNAME")
app.config["MAIL_PASSWORD"]="bxxxapgylebgxxei"#最新授权码

mail=Mail(app)
msg=Message(subject="Flask",sender="1622571327@qq.com",recipients=["1622571327@qq.com"])
msg.body=u"test for many times!"
with app.app_context():
   mail.send(msg)

print "success!"

2.方法二

先在环境中设置重要变量,再运行脚本,安全性好

步骤:

1在cmd中启动虚拟环境,设置重要变量实际值:

set MAIL_NAME=1622XXXXX@qq.com
set MAIL_PASSWORD=XXXXXX#授权码

2在虚拟环境中,运行以下脚本:

# -*- coding: utf-8 -*-
#qqq.py
from flask import Flask
from flask_mail import Mail,Message
import os

app = Flask(__name__)

app.config["MAIL_SERVER"]="smtp.qq.com"
app.config["MAIL_PORT"]=465
app.config['MAIL_USE_SSL'] = True
app.config["MAIL_USERNAME"]=os.environ.get("MAIL_USERNAME")
app.config["MAIL_PASSWORD"]=os.environ.get("MAIL_PASSWORD")

mail=Mail(app)
msg=Message(subject="Flask",sender="1622571327@qq.com",recipients=["1622571327@qq.com"])
msg.body=u"test for many times!"
with app.app_context():
   mail.send(msg)

结论

由多次报错和两个方法对比,可以看出:

  1. 报错信息及数码是很重要的纠错信息,不可直译,多Google一下
  2. 方法二中设计环境变量代码和方案一有些不同,前者没有双引号,后面是字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值