连接到 SMTP 服务器失败 Linux 但不是 Windows

Connecting to SMTP server failing on Linux but not Windows

在 python 脚本中,我有以下内容:

with smtplib.SMTP_SSL(sender_server, 465, context=context) as server:
    server.login(sender_email, sender_password)
    server.sendmail(
        sender_email, email, message.as_string()
    )

在我编写脚本的 Windows 机器上,一切都按预期工作,电子邮件发送和传递没有问题。但是,当我尝试 运行 我的 Linux VPS 上的相同代码时,每次都会抛出 TimeoutError。

Traceback (most recent call last):
  File "script.py", line 151, in <module>
    with smtplib.SMTP_SSL(sender_server, 465, context=context) as server:
  File "/usr/lib/python3.6/smtplib.py", line 1031, in __init__
    source_address)
  File "/usr/lib/python3.6/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.6/smtplib.py", line 336, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python3.6/smtplib.py", line 1037, in _get_socket
    self.source_address)
  File "/usr/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out

是什么导致了这种差异?我的 Google 搜索没有太多结果,但也许我只是在搜索错误的术语。

TimeoutError: [Errno 110] Connection timed out

这意味着对远程系统的访问可能在访问系统的途中某处被阻止。鉴于您在 "Linux VPS" 上遇到此问题,很可能连接被托管此 VPS 的公司阻止,或者您需要专门配置您的计算机以允许此类访问。请咨询您的特定托管商及其文档。