仅通过poplib从收件箱中选择邮件

时间:2009-03-09 05:49:33

标签: python gmail pop3 poplib

我只需要使用poplib从gmail收件箱下载电子邮件。很遗憾,我没有看到任何选项可以单独选择收件箱,poplib也会从发送的邮件中提供电子邮件。

如何仅从收件箱中选择电子邮件?

我不想使用任何gmail特定的库。

3 个答案:

答案 0 :(得分:4)

POP3没有“文件夹”的概念。如果gmail向您显示“已发送”和“已接收”邮件,那么您实际上没有任何选择,只能接收所有该电子邮件。

也许你最好不要使用IMAP4而不是POP3。 Python拥有可与gmail的IMAP4服务器配合使用的库。

答案 1 :(得分:3)

我假设您已启用对您的GMail帐户的POP3 / IMAP访问权限。

这是示例代码:

import imaplib
conn= imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('yourusername', 'yourpassword')
code, dummy= conn.select('INBOX')
if code != 'OK':
    raise RuntimeError, "Failed to select inbox"

code, data= self.conn.search(None, ALL)
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)')
    # you can also use '(RFC822.HEADER)' only for headers
    if code == 'OK':
        pass # your code here
    else:
        raise RuntimeError, "could not retrieve msgid %r" % msgid

conn.close()
conn.logout()

或类似的东西。

答案 2 :(得分:2)

此Java代码建议您可以选择要下载的特定“文件夹”,即使使用POP3也是如此。同样,这是使用Java,而不是Python,所以YMMV。

How to download message from GMail using Java (blog post discusses pushing content into a Lucene search engine locally)