flask的sendemail在开发环境下好用放到服务器上就瘫痪了是为啥

在windows上开发,服务器是linux
原环境是3.6,服务器上是3.5,跟这个有关系?
其他部分代码啥都没变一个好用一个就不好用
经过错误排查,版本跟这个没关系
但是为啥一放到服务器上就出错啊啊啊啊
求大佬解答,已抓狂
这是错误提示

Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "./app/email.py", line 9, in send_async_email
    mail.send(msg)
  File "/home/ubuntu/www/moji/venv/lib/python3.5/site-packages/flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "/home/ubuntu/www/moji/venv/lib/python3.5/site-packages/flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "/home/ubuntu/www/moji/venv/lib/python3.5/site-packages/flask_mail.py", line 158, in configure_host
    host = smtplib.SMTP(self.mail.server, self.mail.port)
  File "/usr/lib/python3.5/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.5/smtplib.py", line 335, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python3.5/smtplib.py", line 306, in _get_socket
    self.source_address)
  File "/usr/lib/python3.5/socket.py", line 711, in create_connection
    raise err
  File "/usr/lib/python3.5/socket.py", line 702, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
阅读 5.1k
4 个回答

1)mail server的配置
2)host/port确认
3)腾讯客服
可以从以上三个方面具体排查下

如果你用的win10的话,可以装一个ubuntu子系统,跑跑看咯。

如果在本地一切正常,云服务器上就不行,那提个工单问问吧。

错误很清楚啊,服务器连接不上嘛。 如果配置没错,就是 IP 被拉黑了吧。

一些建议的举措:

  1. 启用SSL发信

  2. sender发件人邮箱要写全,不能留空不写

  3. 邮件主题不能为空,高概率会被拒收

排查建议:

  1. 在服务器上把你所谓的sendemail方法单独挑出来做邮件发送测试,看看能不能成功

  2. 尽可能多的抛出错误信息,仅仅一个Connection refused无法判断是何原因导致连接被拒

  3. 推荐一个昨天看到的第三方库:Better Exceptions

PS:光贴出错信息不提供相关业务代码,你以为各路神仙都会悬丝诊脉么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题