Python GMail IMAP不返回UID
我正在使用imaplib和Python来获取我的收件箱或GMail标签的内容 我的问题是:当我查询收件箱时,imaplib返回UID,而不是我的电子邮件标签 如果我查询收件箱,我会得到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
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)