imaplib的搜索功能

时间:2018-10-29 19:49:55

标签: imaplib

我在同一电子邮件提供商服务器上有两个电子邮件帐户。 我正努力与他们发送给我的广告垃圾邮件作斗争。幸运的是,发件人电子邮件始终是相同的,因此从理论上讲,每隔一段时间从我的NAS登录到服务器的python程序应该很容易,检查INBOX中是否有来自垃圾邮件发件人的电子邮件并将其删除。如果我使用一个电子邮件/通行证集,它会起作用,这很有趣。如果更改为另一个帐户-从相同的电子邮件地址找不到相同的电子邮件。我使用的示例代码:

import imaplib
import re

username = 'email1@email.com'
password = 'pass1'
#username="email2@email.com
#password="pass2"
hostname = 'imap.email.com'

def open_connection(verbose=False):
    # Connect to the server
    if verbose:
        print('Connecting to', hostname)
    connection = imaplib.IMAP4_SSL(hostname)
    # Login to our account
    if verbose:
        print('Logging in as', username)
    rv, data=connection.login(username, password)
    # print(rv, data)
    rv, mailboxes = connection.list()
    # if rv == 'OK':
    #     print("Mailboxes:")
    #     print(mailboxes)
    return connection

list_response_pattern = re.compile(r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)')

def parse_list_response(line):
    flags, delimiter, mailbox_name = list_response_pattern.match(line).groups()
    mailbox_name = mailbox_name.strip('"')
    return (flags, delimiter, mailbox_name)


c = open_connection()
try:
    typ, mailbox_data = c.list()
    for line in mailbox_data:
        flags, delimiter, mailbox_name = parse_list_response(line)
        c.select(mailbox_name, readonly=True)
        #typ, msg_ids = c.search(None,'(FROM spam@email.com)')
        typ, msg_ids = c.search(None,'ALL')
        print mailbox_name, typ, msg_ids
finally:
    try:
        c.close()
    except:
        pass
    c.logout()

您可以轻松找到-这是Internet上可用代码的组合。如果我使用email1 / pass1,如果我使用email2 / pass2,则可以使用-即使在收件箱中满是符合搜索条件的邮件,收件箱中也找不到任何内容。 有什么想法吗?

0 个答案:

没有答案