找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5345|回复: 8

[已解决] flask-mail发邮件失败,求大神解救一下啊

5

主题

20

帖子

20

积分

贫民

积分
20
pgx5967973 发表于 2016-9-13 22:07:08 | 显示全部楼层 |阅读模式
本帖最后由 pgx5967973 于 2016-9-14 18:30 编辑

在看flask这本书,在flask-mail发邮件这卡住了,不知怎么解决,求帮忙。
用得是163的邮箱,开了SMTP,也弄了授权密码
配置如下:
  1. app.config['MAIL_SERVER'] = 'smtp.163.com'
  2. app.config['MAIL_PORT'] = 25
  3. app.config['MAIL_USE_TLS'] = True
  4. app.config['MAIL_USERNAME'] = '1990@163.com'
  5. app.config['MAIL_PASSWORD']= '1990'
  6. mail = Mail(app)
复制代码
然后在 python shell测试,
  1. from flask_mail import Message
  2. from hello import mail
  3. msg = Message('test subject', sender='1990@163.com', recipients=['1990@163.com'])
  4. msg.body= 'text body'
  5. msg.html= '<b>HTML</b> body'
  6. with app.app_context():
  7.      mail.send(msg)
复制代码
照着书上来,不成功啊。。。
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')


回复

使用道具 举报

4

主题

77

帖子

77

积分

版主

Rank: 7Rank: 7Rank: 7

积分
77

活跃会员热心会员默默耕耘优秀版主论坛元老

北极 发表于 2016-9-14 13:05:55 | 显示全部楼层
本帖最后由 北极 于 2016-9-14 13:09 编辑

11.png 你的端口选择的是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。



回复 支持 1 反对 0

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-9-14 07:53:45 | 显示全部楼层
一般都能从错误提示信息找到答案, 你把错误提示信息完整的发上来看看
回复 支持 反对

使用道具 举报

5

主题

20

帖子

20

积分

贫民

积分
20
pgx5967973  楼主| 发表于 2016-9-14 09:45:23 来自手机 | 显示全部楼层
下面是图。我不太懂这儿ehlo_or_helo_if_needed.
IMG_20160914_082940.jpg
回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-9-14 12:14:28 | 显示全部楼层
看不到图片
回复 支持 反对

使用道具 举报

5

主题

20

帖子

20

积分

贫民

积分
20
pgx5967973  楼主| 发表于 2016-9-14 13:59:04 来自手机 | 显示全部楼层
北极 发表于 2016-9-14 13:05
你的端口选择的是25,那么表示使用的是非ssl协议。即:MAIL_PORT = 25 MAIL_USE_TLS = False MAIL_USE_SSL  ...

TLS怎么都是False呢,我看教程和别人的,他们都是MAIL_TLS=True,
回复 支持 反对

使用道具 举报

5

主题

20

帖子

20

积分

贫民

积分
20
pgx5967973  楼主| 发表于 2016-9-14 14:00:52 来自手机 | 显示全部楼层
whydo1 发表于 2016-9-14 12:14
看不到图片

晚上回去补成文本,现在上班中
回复 支持 反对

使用道具 举报

5

主题

20

帖子

20

积分

贫民

积分
20
pgx5967973  楼主| 发表于 2016-9-14 19:02:10 | 显示全部楼层
本帖最后由 pgx5967973 于 2016-9-14 19:06 编辑
北极 发表于 2016-9-14 13:05
你的端口选择的是25,那么表示使用的是非ssl协议。即:MAIL_PORT = 25 MAIL_USE_TLS = False MAIL_USE_SSL  ...

还是不行啊。我看了下SMTP库的代码,抛出HELOerror是因为ehlo_or_helo_if_needed(),说明服务器没有回应ehlo( The server didn't reply properly to
                                  the helo greeting),即使再次通过Helo()去获取回应也没有成功
  1. def ehlo_or_helo_if_needed(self):
  2.         """Call self.ehlo() and/or self.helo() if needed.

  3.         If there has been no previous EHLO or HELO command this session, this
  4.         method tries ESMTP EHLO first.

  5.         This method may raise the following exceptions:

  6.          SMTPHeloError            The server didn't reply properly to
  7.                                   the helo greeting.
  8.         """
  9.         if self.helo_resp is None and self.ehlo_resp is None:
  10.             if not (200 <= self.ehlo()[0] <= 299):
  11.                 (code, resp) = self.helo()
  12.                 if not (200 <= code <= 299):
  13.                     raise SMTPHeloError(code, resp)
复制代码
回复 支持 反对

使用道具 举报

5

主题

20

帖子

20

积分

贫民

积分
20
pgx5967973  楼主| 发表于 2016-9-14 20:13:24 | 显示全部楼层
谢谢各位,解决了,是163的问题,他妈的换sina一下子就成功了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表