有poplib的问题

时间:2014-07-10 17:30:43

标签: python pop poplib

我想使用poplib从gmail帐户中获取所有邮件:https://docs.python.org/2/library/poplib.html

我面临的问题是,它没有给出正确的电子邮件数量(实际只给出了10%),而且它可以获取的电子邮件也是最初的。

现在我使用了与文档示例中给出的相同的代码。

import getpass, poplib
user= raw_input('Enter Username')
Mailbox = poplib.POP3_SSL('pop.googlemail.com', '995') 
Mailbox.user(user) 
Mailbox.pass_(getpass.getpass()) 
numMessages = len(Mailbox.list()[1])
print numMessages
for i in range(numMessages):
    for msg in Mailbox.retr(i+1)[1]:
        print msg
print Mailbox.stat()
Mailbox.quit()

请告诉我如何解决它。谢谢

1 个答案:

答案 0 :(得分:0)

根据我过去的经验,我的完整收件箱中只有大约200到300封邮件。我的解决方案是切换到 imaplib ,这是一个示例代码:

import imaplib

conn= imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('your_account@gmail.com', 'your_password')
status, dummy= conn.select('INBOX')
if status != 'OK':
    raise RuntimeError, "Failed to select inbox"

code, data= conn.search(None, CRITERION)
if code == 'OK':
    msgid_list= data[0].split()
else:
    raise RuntimeError, "Failed to get message IDs"

for msgid in msgid_list:
    code, data= conn.fetch(msgid, '(RFC822)')

    if code == 'OK':
        PROCESS(data)
    else:
        raise RuntimeError, "could not retrieve msgid %r" % msgid

conn.close()
conn.logout()

对于CRITERION部分,请检查此链接,然后选择您喜欢的

http://nullege.com/codes/search/imaplib.IMAP4_SSL.search