解决flask开发smtplib.SMTPSenderRefused: (503, b‘Error: need EHLO and AUTH first !‘, ‘******@qq.com‘)问题

在参考flask web开发书中的邮件发送问题的时候,根据作者的配置,由于作者使用的是谷歌邮箱,我们不方便发送使用,所以将邮箱更换成QQ邮箱进行测试。

根据作者的配置进行操作

from flask import Flask
from flask_mail import Mail
from flask_mail import Message
import os

app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
# app.config['MAIL_USE_TLS'] = True   # 作者此处使用TLS,是因为谷歌是STARTTLS加密
                                       而qq是使用的SSL加密,则应该改成下面的这个配置
app.config['MAIL_USE_SSL'] = True     # 发送成功的配置   
app.config['MAIL_USERNAME'] = os.environ.get('QQ邮箱1@qq.com')
app.config['MAIL_PASSWORD'] = os.environ.get('开启stmp的时候,QQ的授权码')
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <QQ邮箱1@qq.com>'
app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')
mail = Mail(app)

msg = Message('Test Mail', sender='QQ邮箱1@qq.com', recipients=['QQ邮箱2@qq.com'])
msg.body = 'This is the plain text body'
msg.html = 'This is the <b>HTML</b> body'
with app.app_context():
    mail.send(msg)

按照上面的代码执行的时候,显示报错信息如下

Traceback (most recent call last):
  File "D:/flasky/venv/test01.py", line 27, in <module>
    mail.send(msg)
  File "D:\flasky\venv\lib\site-packages\flask_mail.py", line 492, in send
    message.send(connection)
  File "D:\flasky\venv\lib\site-packages\flask_mail.py", line 427, in send
    connection.send(self)
  File "D:\flasky\venv\lib\site-packages\flask_mail.py", line 192, in send
    message.rcpt_options)
  File "D:\software\miniconda\lib\smtplib.py", line 867, in sendmail
    raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (503, b'Error: need EHLO and AUTH first !', '553931273@qq.com')

仔细研究发现,是因为根据作者写法,采用了os.environ.get()方法获取用户名和密码,在这里,直接将这个方法去掉就可以了

如下

from flask import Flask
from flask_mail import Mail
from flask_mail import 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['smtp.UseDefaultCredentials'] = True
# app.config['smtp.EnableSsl'] = True
app.config['MAIL_USERNAME'] = '你的QQ@qq.com'
app.config['MAIL_PASSWORD'] = '你的授权码'
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <你的QQ@qq.com>'
app.config['FLASKY_ADMIN'] = 'FLASKY_ADMIN'
mail = Mail(app)

msg = Message('Test Mail', sender='你的QQ@qq.com', recipients=['你的QQ或者其他邮箱@qq.com'])
msg.body = 'This is the plain text body'
msg.html = 'This is the <b>HTML</b> body'
with app.app_context():
    mail.send(msg)

在flask shell的操作为

进入venv环境,激活虚拟环境 命令为:Scripts\activate

(venv) D:\flasky\venv>set FLASK_APP=test01.py

(venv) D:\flasky\venv>flask shell
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
App: test01 [production]
Instance: D:\flasky\venv\instance
>>> from test01 import *
>>> from flask_mail import Message
>>> msg=Message('Test Mail',sender='你的QQ号@qq.com',recipients=['其他邮箱@qq.com'])
>>> msg.body='test body'
>>> msg.html='<b>哈哈哈哈哈哈哈</b>'
>>> with app.app_context():    </b>'
...     mail.send(msg)
...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值