在看flask这本书,在flask-mail发邮件这卡住了,不知怎么解决,求帮忙。
用得是163的邮箱,开了SMTP,也弄了授权密码
配置如下:
然后在 python shell测试,
照着书上来,不成功啊。。。
Traceback (most recent call last): File console , line 2, in module File C:\Python3\lib\site-packages\flask_mail.py , line 491, in send with self.connect() as connection: File C:\Python3\lib\site-packages\flask_mail.py , line 144, in __enter__ self.host = self.configure_host() File C:\Python3\lib\site-packages\flask_mail.py , line 163, in configure_host host.starttls() File C:\Python3\lib\smtplib.py , line 748, in starttls self.ehlo_or_helo_if_needed() File C:\Python3\lib\smtplib.py , line 602, in ehlo_or_helo_if_needed raise SMTPHeloError(code, resp) smtplib.SMTPHeloError: (500, b Error: bad syntax )
你的端口选择的是25,那么表示使用的是非ssl协议。
即:MAIL_PORT = 25 MAIL_USE_TLS = False MAIL_USE_SSL = False
另外补充一下目前使用smtp发邮件的思路:
1.首先在163/QQ等网页里开通smtp功能,不开通是一定不能发的;
2.设置客户端授权密码,使用客户端授权密码代替密码发送;
3.如果使用非ssl协议,那么smtp端口号是25,MAIL_PORT = 25, MAIL_USE_TLS = False, MAIL_USE_SSL = False ;
4. 如果使用SSL协议,那么端口号是 465 或者 994, MAIL_PORT = 465, MAIL_USE_TLS = False, MAIL_USE_SSL = True。
一般都能从错误提示信息找到答案, 你把错误提示信息完整的发上来看看
下面是图。我不太懂这儿ehlo_or_helo_if_needed.
TLS怎么都是False呢,我看教程和别人的,
他们都是MAIL_TLS=True,
还是不行啊。我看了下SMTP库的代码,抛出HELOerror是因为ehlo_or_helo_if_needed(),
说明服务器没有回应ehlo( The server didn t reply properly to the helo greeting),
即使再次通过Helo()去获取回应也没有成功
谢谢各位,解决了,是163的问题,换sina一下子就成功了。