python-3.x 我如何在一系列传入的电子邮件中删除它们,而不是在它们全部发送之后删除它们?

gojuced7  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(139)

我正在写一个程序,以垃圾邮件收件箱与大量的电子邮件一次。我正在尝试创建一个过滤器,以便删除这些电子邮件。到目前为止,我有以下代码,但只有在所有电子邮件发送后才能工作,并且在发送时不会删除它们。(这段代码来自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()
nafvub8i

nafvub8i1#

这不可能您无法从收件箱中删除尚未在该收件箱中的内容。
如果你想拒绝电子邮件而不是接收它们,你必须为你的入站SMTP服务器编写一个过滤器(它似乎不是由你运行的,所以你不能),即使这样,这个原则在逻辑上也不起作用-你必须至少部分地接收电子邮件才能检查它。
所以这一切福尔斯在你的问题的逻辑/因果关系方面。

相关问题