从Python连接到Gmail

use*_*729 2 python gmail imaplib

我一直在尝试使用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. 
Run Code Online (Sandbox Code Playgroud)

回溯是:

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
Run Code Online (Sandbox Code Playgroud)

aba*_*ert 7

OSError: [Errno 65] No route to host它说的是什么意思:你无法通过机器进入那台机器.

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

ping imap.gmail.com
Run Code Online (Sandbox Code Playgroud)

这可能实际上是一个名称查找错误,并且你在某种程度上得到了一个糟糕的地址imap.gmail.com.所以,为了确保,也要通过IP地址检查:

ping 74.125.129.108
ping 74.125.129.109
Run Code Online (Sandbox Code Playgroud)

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

telnet imap.gmail.com
Run Code Online (Sandbox Code Playgroud)

如果它正在工作,这应该挂了很长时间,或者给你一个拒绝连接的错误; 如果它给你一个无路由到主机的错误,那就是你遇到的同样的问题.

您的路由器也可能专门阻止端口993.您也可以测试它:

telnet imap.gmail.com 993
Run Code Online (Sandbox Code Playgroud)

如果它没有像"连接到gmail-imap.l.google.com"那样回来,那么同样的问题也是如此.

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