【问题标题】:Python GMail IMAP doesn't return UIDsPython GMail IMAP 不返回 UID
【发布时间】:2012-11-08 17:57:40
【问题描述】:

我正在使用 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)

和:

#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)

有谁知道为什么 imaplib 返回收件箱的 UID 而为特定标签排序索引,我怎样才能让它返回 UID?

谢谢

【问题讨论】:

    标签: python gmail imaplib


    【解决方案1】:

    发现问题。 UID 已正确返回。

    我的问题是:我正在使用一个函数来根据其 UID 手动获取电子邮件。因此,在收件箱的情况下,我获取了 UID,然后使用此功能具体获取每封邮件。每个标签都一样。

    但是,每封特定的电子邮件都被退回到收件箱,但在标签的情况下,我无法获取每封邮件。因此,我假设我没有将正确的 UID 传递给函数。

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

    所以在这种情况下,对于收件箱,我会获取一个 UID 列表,然后使用此功能成功获取特定的每封邮件,但在特定 GMail 标签的情况下,我将获取 UID 列表,然后失败获取每封特定邮件,因为我在收件箱上执行选择。

    将收件箱中的选择更改为获取每个特定邮件的函数内的特定标签,现在可以完美运行了。

    【讨论】:

    • 我知道对吗?为什么整个帐户的 UID 不是唯一的?
    【解决方案2】:

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

    【讨论】:

    • 感谢您的快速回复。找出错误并发布了回复。
    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2019-01-22
    • 2013-12-07
    • 1970-01-01
    • 2016-06-23
    相关资源
    最近更新 更多