Python imaplib搜索返回超出标准的结果

时间:2020-06-06 14:44:17

标签: python imaplib

我正在尝试使用imaplib提取具有特定条件的电子邮件,但是搜索过滤器无法正常工作……它正在拉回应该过滤掉的结果。 最初,我只是尝试按特定电子邮件帐户中的电子邮件进行过滤,但是我在结果中也看到了其他电子邮件地址的结果?

这是我的代码:

import smtplib
import time
import imaplib
import email
import re

ORG_EMAIL   = "@gmail.com"
FROM_EMAIL  = "<EMAIL_ACCOUNT>" + ORG_EMAIL
FROM_PWD    = "<PASSWORD>"
SMTP_SERVER = "imap.gmail.com"
SMTP_PORT   = 993

def readEmail():
    try:
        mail = imaplib.IMAP4_SSL(SMTP_SERVER)
        mail.login(FROM_EMAIL,FROM_PWD)
        mail.select('inbox')

        type, data = mail.search(None, '(FROM "<SEARCH_EMAIL_ACCOUNT>@gmail.com")')
        mail_ids = data[0]

        id_list = mail_ids.split()   
        first_email_id = int(id_list[0])
        latest_email_id = int(id_list[-1])

        amounts = []
        print 'Emails found: ', len(range(latest_email_id,first_email_id-1, -1))
        for i in range(latest_email_id,first_email_id-1, -1)[0:5]:
            typ, data = mail.fetch(i, '(RFC822)' )
            for response_part in data:
                if isinstance(response_part, tuple):
                    msg = email.message_from_string(response_part[1])
                    print 'TO: ',msg['to'],' ||| FROM: ',msg['from'], ' ||| SUBJECT: ', msg['subject']

                    if msg.is_multipart():
                        for payload in msg.get_payload():
                            text = payload.get_payload()
                    else:
                        text = msg.get_payload()
    except Exception, e:
        print str(e)

这些是5395个结果的前5个结果(根据gmail网络应用的同一搜索,总共应该有85个结果!)

Emails found:  5395
TO:  "ME@gmail.com" <ME@gmail.com>  ||| FROM:  "SEARCH_EMAIL_ACCOUNT@gmail.com" <SEARCH_EMAIL_ACCOUNT@gmail.com>  ||| SUBJECT:  subject title...
TO:  ME <ME@gmail.com>  ||| FROM:  GitHub <noreply@github.com>  ||| SUBJECT:  [GitHub] subject title....
TO:  ME <ME@gmail.com>  ||| FROM:  GitHub <support@github.com>  ||| SUBJECT:  [GitHub] subject title....
TO:  ME <ME@gmail.com>  ||| FROM:  GitHub <noreply@github.com>  ||| SUBJECT:  [GitHub] subject title....
TO:  ME@gmail.com  ||| FROM:  RANDOM_EMAIL_ACCOUNT@adasd.com.au  ||| SUBJECT:  Your new service is active

最上面的结果是正确的,并且符合搜索条件,但是其他4个结果甚至远不及符合条件!

我在做什么错了?

编辑: 我只是使用另一个gmail帐户尝试了此操作,一个gmail帐户的收件箱中总共有大约10封电子邮件(我在很早以前就设置好了,但还没有使用它)。该代码适用于该帐户,并使用发件人地址正确过滤掉电子邮件!我无法在我的主要帐户上使用它...

Edit2: 我尝试了很多不同的搜索条件,似乎第一个结果总是正确的,但是之后的结果总是随机的。

0 个答案:

没有答案
相关问题