我正在使用带有Python的imaplib来获取我的收件箱或GMail标签的内容.
我的问题是:当我查询收件箱时,imaplib返回UID,但不是我的电子邮件标签.
如果我查询收件箱,我会得到UID:
inbox EMAIL_UIDS: 24408 24599 25193 25224 25237 25406 25411 25412 25413 25415
Run Code Online (Sandbox Code Playgroud)
但是如果我查询我的标签"New"(其中包含收件箱中的两条消息,因此应该包含上述两个UID),我只得到有序的索引:
New EMAIL_UIDS: 1 2
Run Code Online (Sandbox Code Playgroud)
我的代码是:
#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)
Run Code Online (Sandbox Code Playgroud)
和:
#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)
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么imaplib为收件箱返回UID但是为特定标签排序了索引,我怎样才能让它返回UID?
谢谢
小智 5
发现了问题.UID正在正确返回.
我的问题是:我正在使用一个函数来根据其UID手动获取电子邮件.因此,在收件箱的情况下,我获取了UID,然后使用此功能获取特定的每个邮件.每个标签都一样.
但是,每个特定的电子邮件都是为收件箱返回的,但在标签的情况下,我无法获取每封邮件.因此我假设我没有将正确的UID传递给函数.
我的错误与此无关.在获取特定邮件的功能中,我总是从收件箱中取出,而不是从相关标签中取出它.
所以在这种情况下,对于收件箱,我将获得一个UID列表,然后使用此函数成功获取特定的每个邮件,但在特定的GMail标签的情况下,我将获取UID列表,然后无法获取每个特定邮件,因为我在收件箱中执行选择.
将选择从收件箱更改为获取每个特定邮件的函数内的特定标签,现在工作正常.
| 归档时间: |
|
| 查看次数: |
1522 次 |
| 最近记录: |