我正在写一个程序,以垃圾邮件收件箱与大量的电子邮件一次。我正在尝试创建一个过滤器,以便删除这些电子邮件。到目前为止,我有以下代码,但只有在所有电子邮件发送后才能工作,并且在发送时不会删除它们。(这段代码来自https://www.thepythoncode.com/article/deleting-emails-in-python,我只是想添加到它上面)
import imaplib
import email
from email.header import decode_header
username = "testproject400@outlook.com"
password = "blank for a reason"
imap = imaplib.IMAP4_SSL("imap-mail.outlook.com")
imap.login(username, password)
imap.select("INBOX")
status, messages = imap.search(None, 'FROM "blank for a reason"')
messages = messages[0].split(b' ')
for mail in messages:
msg = imap.fetch(mail, "(RFC822)")
for response in msg:
if isinstance(response, tuple):
msg = email.message_from_bytes(response[1])
subject = decode_header(msg["Subject"])[0][0]
if isinstance(subject, bytes):
subject = subject.decode()
print("Deleting", subject)
imap.store(mail, "+FLAGS", "\\Deleted")
imap.expunge()
imap.close()
1条答案
按热度按时间nafvub8i1#
这不可能您无法从收件箱中删除尚未在该收件箱中的内容。
如果你想拒绝电子邮件而不是接收它们,你必须为你的入站SMTP服务器编写一个过滤器(它似乎不是由你运行的,所以你不能),即使这样,这个原则在逻辑上也不起作用-你必须至少部分地接收电子邮件才能检查它。
所以这一切福尔斯在你的问题的逻辑/因果关系方面。