【问题标题】:Connecting to Gmail from Python从 Python 连接到 Gmail
【发布时间】:2013-07-16 11:58:47
【问题描述】:

我一直在尝试使用 python 连接到我的 Gmail 帐户。 imap 已启用。

import imaplib

imap_server = imaplib.IMAP4_SSL("imap.gmail.com",993)
# also tried imap_server = imaplib.IMAP4_SSL("imap.gmail.com"), doesnt work. 

追溯是:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    imap_server = imaplib.IMAP4_SSL("imap.gmail.com",993)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py", line 1202, in __init__
    IMAP4.__init__(self, host, port)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py", line 172, in __init__
    self.open(host, port)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py", line 1217, in open
    IMAP4.open(self, host, port)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py", line 248, in open
    self.sock = self._create_socket()
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py", line 1205, in _create_socket
    sock = IMAP4._create_socket(self)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/imaplib.py", line 238, in _create_socket
    return socket.create_connection((self.host, self.port))
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/socket.py", line 435, in create_connection
    raise err
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/socket.py", line 426, in create_connection
    sock.connect(sa)
OSError: [Errno 65] No route to host

【问题讨论】:

  • 你能确保你有访问权限,并与traceroute 联系吗?你可能在防火墙后面。

标签: python gmail imaplib


【解决方案1】:

OSError: [Errno 65] No route to host 的意思就是它所说的:你无法从你的机器上到达那台机器。

您可以通过打开终端/DOS 提示符并输入以下内容从 Python 外部对其进行测试:

ping imap.gmail.com

这可能实际上是一个名称查找错误,并且您不知何故得到了一个错误的imap.gmail.com 地址。所以,为了确定,也要检查 IP 地址:

ping 74.125.129.108
ping 74.125.129.109

如果ping 有效,您可以检查您的路由器是否出于某种原因阻止了对主机的 TCP 访问,例如:

telnet imap.gmail.com

如果它正常工作,它应该会挂起很长时间,或者给你一个连接被拒绝的错误;如果它给您一个 no-route-to-host 错误,这与您看到的问题相同。

也有可能是您的路由器专门阻止了端口 993。您也可以对此进行测试:

telnet imap.gmail.com 993

如果它没有返回“已连接到 gmail-imap.l.google.com”之类的信息,这里也会出现同样的问题。

无论如何,一旦您确认这是系统或网络配置问题,而不是编程问题,请前往相应站点寻求系统帮助。

【讨论】:

  • 我有同样的问题,但我确实看到了connected to gmail..
  • @3zzy:那你没有有同样的问题。创建一个包含所有相关信息的新问题;如果您认为它会有所帮助,您可以包含指向此问题或答案的链接。并确保说明您可以从同一台机器上使用 telnet 连接。
猜你喜欢
  • 1970-01-01
  • 2015-07-19
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多