Skip to main content
 首页 » 编程设计

python之通过 python 和 IMAP4 从收件箱中删除电子邮件

2025年04月02日33shangdawei

我是所有这些编码方面的初学者,作为项目的一部分,我正在尝试编写一些 python 代码来读取第一封未读电子邮件(首先是最早的电子邮件),打印内容,然后从收件箱中删除电子邮件,这是我的代码,但我无法让它删除电子邮件,我已经用谷歌搜索了几个小时,但一无所获。

#readyourmail.py 
import imaplib 
import email 
def readmail(): 
    try: 
        mail = imaplib.IMAP4_SSL('imap.gmail.com') 
        mail.login('email','password') 
        mail.select('inbox') 
        result, data = mail.uid('search', None, "ALL") 
        latest_email_uid = data[0].split()[0] 
        result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)') 
        raw_email = email_data[0][1] 
        raw_email_string = raw_email.decode('utf-8') 
        email_message = email.message_from_string(raw_email_string) 
        for part in email_message.walk(): 
            if part.get_content_type() == "text/plain": 
                body = part.get_payload(decode=True) 
                print(body.decode('utf-8')) 
            else: 
                continue 
        mail.store(latest_email_uid,'+FLAGS','\\Deleted') 
        mail.expunge() 
    except: 
        print("No valid emails") 

感谢您的帮助!

请您参考如下方法:

由于您使用的是 UID 命令来获取邮件,因此您必须使用 UID 命令来删除它。

试试下面的代码。

mail.uid('STORE', latest_email_uid , '+FLAGS', '(\Deleted)')   
mail.expunge()