2012-10-19 15 views
1

檢索到的我是從我的Gmail帳戶與下面的代碼下面的閱讀郵件。運行了2擋時的腳本,該消息不會從郵件服務器

import poplib 
pop_conn = poplib.POP3_SSL('pop.gmail.com') 
pop_conn.user('user')    # result: '+OK send PASS' 
pop_conn.pass_('password')  # result: '+OK Welcome.' 
print pop_conn.list()[1] 
pop_conn.quit() 

它向我顯示1條消息,如預期的那樣。
但是,如果我第二次運行此腳本,則會得到0條消息。在服務器上,消息仍然存在且未讀。
如何獲得第二次運行腳本的所有消息?

對我來說,它表現爲一個電子郵件客戶端,不下載相同的郵件的兩倍。是否有一些標誌強制程序再次下載一切? 我使用Ubuntu的蟒蛇2.7.x 12.10

+0

也許你可以詳細一點,提供更多的內容(例如,其中Python版本等)。該片段對我來說顯示效果很好:我每次都收到相同的電子郵件列表。我試着用python 2.7.x. – mjv

+0

@mjv感謝您讓我知道它可以在您的PC上運行。它變得古怪和好奇。我在使用pop3失敗後在ubuntu 12.10 –

回答

1

你確定這一切,當它發生了,你是幹什麼的?據我所知,只是用list()不應該這樣做,但是如果你使用retr()讀取郵件內容太多,那麼POP3服務器通常將郵件標記,不會進一步連接恢復它了。

你可以嘗試使用IMAP代替,因爲它可以讓您更詳細地指定的行爲,例如。您可以告訴它不要將郵件標記爲已見,並且允許您多次檢索它們。 Google支持IMAP,python有imaplib來使用它。

+0

上使用python 2.7.x,我製作了一個imap解決方案。我在這裏問了這個問題,以瞭解它爲什麼會失敗。現在,我試圖在同一臺機器上運行這個腳本,現在它每次都不起作用。我不明白。當我發佈這個問題的時候,我可能已經嘗試過retr(),但是之後我做了好幾次:發送消息,運行上面的代碼片斷兩次(並且兩者之間沒有任何內容),因爲第一次我得到了消息,第二次 - 沒有什麼。 upvote從我身邊,但我會等待接受,如果有人提出100%的解決方案 –

+0

那麼這肯定是奇怪的。在這種情況下,我希望有人能夠爲此做出更好的解釋。現在它也困擾我了。 :) –