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

2024-04-25 17:55:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初学者在所有这些编码的东西,作为一个项目的一部分,我正试图写一点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")

谢谢你的帮助!你知道吗


Tags: 代码importmessageuiddatastringraw电子邮件
1条回答
网友
1楼 · 发布于 2024-04-25 17:55:48

因为您使用UID命令来获取邮件,所以必须使用UID命令来删除它。你知道吗

请尝试以下代码。你知道吗

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

相关问题 更多 >