用Flask-mail发送邮件失败解决方案
2016-08-19 14:40
316 查看
在看Flask-web开发第六章的时候发现运行书上的代码有错误,在挣扎了一中午,终于找到问题所在以及解决方法:
shell方面:
在PS中设置了环境变量:
设置完进shell,运行书上代码,错误如下:
出的错误太多了,改着改着还有这种:
原来用的Gmail,以为是邮箱问题就换了qq,安全验证也换了SSL(原来是
但还是有错误,我想可能是账户的问题,经过一顿恶搜,终于知道了一个方法来检查输入的环境变量:
随后我就在shell里试了试,居然是
接下来是想尽一些办法成功设置环境变量,书上的示例代码如下:
但还是None,我想要不换CMD试试?,结果就在CMD中输入环境变量(之前一直是PoweShell):
这说明set是在cmd里的命令,我一直误会了,关于在PS中设置环境变量的
8ca2
操作我也找了,看下面:
对比cmd:
对比cmd:
说一下需要注意的坑:
邮箱的安全协议(Gmail是TLS,qq和一些别的是SSL)
有些设置在PowerShell中会失败,那就换CMD试试
大小写一定要看好(因为马虎没少吃亏)
windows改环境变量后要重启CMD才生效
shell方面:
from hello import mail from flask_mail import Message from hello import mail from flask import current_app msg = Message('Test mail', sender='xxx@qq.com', recipients=['xxx@.qq.com']) msg.body = 'text body' msg.html = '<b>HTML</b> body' app_ctx = app.app_context() app_ctx.push() with app_ctx: mail.send(msg)
在PS中设置了环境变量:
(venv) $ set MAIL_USERNAME=XXXXXXXX@qq.com #此处填写你的账户 (venv) $ set MAIL_PASSWORD=******* #此处填写你的密码
设置完进shell,运行书上代码,错误如下:
Traceback (most recent call last): File "<console>", line 2, in <module> File "D:\flasky\env\lib\site-packages\flask_mail.py", line 492, in send message.send(connection) File "D:\flasky\env\lib\site-packages\flask_mail.py", line 427, in send connection.send(self) File "D:\flasky\env\lib\site-packages\flask_mail.py", line 192, in send message.rcpt_options) File "c:\python27\Lib\smtplib.py", line 736, in sendmail raise SMTPSenderRefused(code, resp, from_addr) SMTPSenderRefused: (503, 'Error: need EHLO and AUTH first !', u'xxxxxxx@qq.com')
出的错误太多了,改着改着还有这种:
SMTPSenderRefused:(553,'Mail from must equal authorized user…………
原来用的Gmail,以为是邮箱问题就换了qq,安全验证也换了SSL(原来是
app.config['MAIL_USE_TLS'] = True)
但还是有错误,我想可能是账户的问题,经过一顿恶搜,终于知道了一个方法来检查输入的环境变量:
os.environ.get("MAIL_USERNAME") # 获取环境变量中你所输入的值
随后我就在shell里试了试,居然是
None,这么说我之前改的环境变量没设置进去,问题这就出来了
接下来是想尽一些办法成功设置环境变量,书上的示例代码如下:
(venv) $ set MAIL_USERNAME=<Gmail username> (venv) $ set MAIL_PASSWORD=<Gmail password>
但还是None,我想要不换CMD试试?,结果就在CMD中输入环境变量(之前一直是PoweShell):
(venv) $ set MAIL_USERNAME=xxxxxxxx (venv) $ set MAIL_PASSWORD=11111 (env) D:\flasky\env>PYTHON hello.py shell >>> import os >>> os.environ.get('MAIL_USERNAME') 'xxxxxxxx' >>> os.environ.get('MAIL_PASSWORD') '11111'
这说明set是在cmd里的命令,我一直误会了,关于在PS中设置环境变量的
8ca2
操作我也找了,看下面:
# 查看所有环境变量 ls env: # 搜索环境变量 ls env:NODE* # 查看单个环境变量 $env:NODE_ENV # 添加/更新环境变量 $env:NODE_ENV=development # 删除环境变量 del evn:NODE_ENV
对比cmd:
#Powershell设置环境变量 #查看所有环境变量 ls env: #搜索环境变量 ls env:NODE* #查看单个环境变量 $env:NODE_ENV #添加/更新环境变量 $env:NODE_ENV=development #删除环境变量 del evn:NODE_ENV
对比cmd:
# 查看所有环境变量 set # 查看单个环境变量 set NODE_ENV # 添加/更新环境变量 set NODE_ENV=development # 删除环境变量 set NODE_ENV=
说一下需要注意的坑:
邮箱的安全协议(Gmail是TLS,qq和一些别的是SSL)
有些设置在PowerShell中会失败,那就换CMD试试
大小写一定要看好(因为马虎没少吃亏)
windows改环境变量后要重启CMD才生效
相关文章推荐
- System.Web.Mail发送邮件失败的终级解决方案
- Python学习之Flask-Mail异步邮件发送
- 使用Flask-Mail扩展发送邮件
- Flask-Mail使用163邮箱异步发送邮件
- 刷爆你朋友的邮箱! 使用Celery+Flask_mail进行定时邮件发送!
- maven项目(错误二) spring发送邮件报“com.sun.mail.smtp.SMTPAddressFailedException: 553 5.7.1”的解决方案
- 邮件发送以及javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp解决方案
- System.Net.Mail发送邮件失败所在
- flask-mail发送QQ邮件代码示例(亲测可行)
- Exchange2013下Telnet发送测试邮件失败及解决方案
- System.Net.Mail发送邮件失败所在
- System.Net.Mail 发送邮件时,身份认证失败的问题
- Zimbra安装成功后,邮件发送失败!!急!!发生错误 (mail.TRY_AGAIN),原因不详。
- flask-mail发送QQ邮件代码示例(亲测可行)
- 通过QQ邮箱的SMTP服务器发送QQ邮件至163邮箱提示“发送邮件失败”的解决方案(三种可能性,不妨一试)
- Flask-email 发送邮件的配置,发送附件的方法,以及os.environ.get('MAIL_USERNAME')为None的解决办法
- PHP mail 通过Windows的SMTP发送邮件失败的解决方案
- 关于服务器上发送邮件程序发送失败的解决方案
- JavaMail - javax.mail.MessagingException 解决java邮件有时候发送失败的错误
- 发送邮件失败 javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first