我在同一电子邮件提供商服务器上有两个电子邮件帐户。 我正努力与他们发送给我的广告垃圾邮件作斗争。幸运的是,发件人电子邮件始终是相同的,因此从理论上讲,每隔一段时间从我的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,则可以使用-即使在收件箱中满是符合搜索条件的邮件,收件箱中也找不到任何内容。 有什么想法吗?