【问题标题】:python's smtplib cannot connect to gmail, mail.ru or anything elsepython 的 smtplib 无法连接到 gmail、mail.ru 或其他任何东西
【发布时间】:2012-08-13 11:50:00
【问题描述】:

从 line 开始的所有行都返回错误 Errno 10060 或错误 Errno 10061:

import smtplib
server = smtplib.SMTP('smtp.gmail.com:465')
mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer = smtplib.SMTP("smtp.gmail.com", 465)
mailServer = smtplib.SMTP("smtp.mail.ru", 25)
mailServer = smtplib.SMTP("smtp.mail.ru", 2525)

你能帮忙吗?我一定遗漏了一些琐碎的事情......完整的错误消息:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\smtplib.py", line 242, in __init__
(code, msg) = self.connect(host, port)
File "C:\Python27\lib\smtplib.py", line 302, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "C:\Python27\lib\smtplib.py", line 277, in _get_socket
return socket.create_connection((port, host), timeout)
File "C:\Python27\lib\socket.py", line 571, in create_connection
raise err
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\smtplib.py", line 242, in __init__
(code, msg) = self.connect(host, port)
File "C:\Python27\lib\smtplib.py", line 302, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "C:\Python27\lib\smtplib.py", line 277, in _get_socket
return socket.create_connection((port, host), timeout)
File "C:\Python27\lib\socket.py", line 571, in create_connection
raise err
socket.error: [Errno 10061] No connection could be made because the target machine actively refused it

【问题讨论】:

  • 检查您的防火墙和网络配置。
  • 我可能在防火墙后面。有什么方法可以检查是否是防火墙造成了问题?谢谢。
  • @lavin: 我如何使用代理?
  • @YuccaV:您很可能使用了被禁止/受限制的 IP。如果目标机器主动拒绝连接,您可能无法通过该端口连接到该服务器。你可以在另一个网络/机器上测试来验证。

标签: python gmail smtplib


【解决方案1】:

使用smtplib.SMTP_SSL() 进行 TLS 连接。

【讨论】:

  • server = smtplib.SMTP_SSL('smtp.gmail.com', 465) 不起作用,Errno 10060 :(
【解决方案2】:

下面的所有命令都没有错;我的问题确实是由 IP 限制引起的。感谢您的所有回答。

【讨论】:

  • 我要求我雇主的 IT 服务部门授予我对公司 SMTP 服务器之一的访问权限...
【解决方案3】:

或者使用server = smtplib.SMTP('smtp.gmail.com:25')进行正常连接

如果你想要来自 25 端口的 tls,只需添加

server.starttls() 

在第一行之后。

ps:由于默认是25端口,下面是等价的:

server = smtplib.SMTP('smtp.gmail.com')
server.starttls() 

【讨论】:

  • :P 只是一个选项。如果你想从端口 25 获取 tls,只需添加 server.starttls()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 2018-09-20
相关资源
最近更新 更多