2013-07-17 121 views
2

我一直在嘗試使用python連接到我的Gmail帳戶。 imap已啓用。從Python連接到Gmail

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 
+0

你能確保你有權限訪問,並用'traceroute'來檢查嗎?你可能在防火牆後面。 – dnozay

回答

7

什麼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 

如果它正在工作,這應該掛起很長時間,或給你一個連接拒絕錯誤;如果它給你一個沒有路由到主機的錯誤,那就是你看到的同樣的問題。

這也有可能是你的路由器是專門阻止端口993,你也能測試:

telnet imap.gmail.com 993 

如果不回來的東西,如「連接到gmail-imap.l.google。 com「,同樣的問題也在這裏。

無論如何,一旦您確認這是系統或網絡配置問題,而不是編程問題,請向適當的站點上的系統尋求幫助。

+0

原來它畢竟是路由器。謝謝。 – user2592729

+0

我有同樣的問題,但我確實看到'連接到gmail ..' – 3zzy

+1

@ 3zzy:那麼你不會有同樣的問題。用所有相關信息創建一個新問題;如果您認爲這將有所幫助,您可以包含此問題的鏈接或答案。並且確保解釋你可以用同一臺機器連接telnet。 – abarnert