Python GMail IMAP不返回UID

Python GMail IMAP不返回UID,python,gmail,imaplib,Python,Gmail,Imaplib,我正在使用imaplib和Python来获取我的收件箱或GMail标签的内容 我的问题是:当我查询收件箱时,imaplib返回UID,而不是我的电子邮件标签 如果我查询收件箱,我会得到UID: inbox EMAIL_UIDS: 24408 24599 25193 25224 25237 25406 25411 25412 25413 25415 但是如果我查询我的标签New,它包含收件箱中的两条消息,因此应该包含上述两个UID,我只会得到有序索引: New EMAIL_UIDS: 1 2

我正在使用imaplib和Python来获取我的收件箱或GMail标签的内容

我的问题是:当我查询收件箱时,imaplib返回UID,而不是我的电子邮件标签

如果我查询收件箱,我会得到UID:

inbox EMAIL_UIDS: 24408 24599 25193 25224 25237 25406 25411 25412 25413 25415
但是如果我查询我的标签New,它包含收件箱中的两条消息,因此应该包含上述两个UID,我只会得到有序索引:

New EMAIL_UIDS: 1 2
我的代码是:

#Main file
if folder_name is None:
    email_uids = obtain_inbox_email_uids(mail)
else:
    email_uids = obtain_folder_email_uids(folder_name,mail)
email_uids = list(email_uids)
以及:

有人知道为什么imaplib返回收件箱的UID,但为特定标签指定了索引,我如何让它返回UID


谢谢

每个邮箱的IMAP UID都是唯一的。如果您刚刚创建了邮箱,那么1和2几乎肯定是这两条消息的正确UID。你为什么认为他们不是呢?

找到了问题所在。UID被正确返回

我的问题是:我正在使用一个函数根据UID手动获取电子邮件。所以在收件箱中,我获得了UID,然后使用这个函数来获取每封特定的邮件。每个标签都是相同的

然而,每个特定的电子邮件都会返回到收件箱中,但对于标签,我无法获取每个邮件。因此,我假设没有向函数传递正确的UID

我的错误与此无关。在获取特定邮件的函数中,我总是从收件箱获取邮件,而不是从相关标签获取邮件

因此,在这种情况下,对于收件箱,我将获取UID列表,然后使用此功能成功获取特定邮箱中的每封邮件,但对于特定GMail标签,我将获取UID列表,然后无法获取每封特定邮件,因为我在收件箱中执行select


将“从收件箱中选择”更改为提取每封特定邮件的功能中的特定标签,现在工作正常。

感谢您的快速回复。找出了错误并发布了回复。我知道,对吗?为什么UID在整个帐户中不是唯一的?
#Email utilities file
def obtain_folder_email_uids(folder_name, mail):
    """
    Given an IMAP instance,
    return the UIDs of the emails in a specific folder.
    """

    mail.select(folder_name)

    result, data = mail.uid('search', None, "ALL")
    print "RESULT, DATA",result,data
    email_uids = data[0]

    print folder_name,"EMAIL_UIDS:",email_uids
    email_uids = email_uids.split(" ")
    email_uids = reversed(email_uids)

    return email_uids

def obtain_inbox_email_uids(mail):
    """
    Given an IMAP instance,
    return the UIDs of the inbox emails.
    """

    return obtain_folder_email_uids('inbox', mail)