python+imaplib+email实现邮箱数据读取、附件下载、条件删除

目录

创建服务并登录邮箱 

获取邮箱中的文件夹

获取邮件列表

解析邮件信息和获取邮件的UID

获取标题

获取发件人信息 

获取收件人和抄送人信息

获取收件时间

获取主题内容

获取并下载附件

删除邮件

关闭邮箱服务

完整代码


创建服务并登录邮箱 

import imaplib, email, getpass
from email.header import decode_header
from email.utils import parseaddr, getaddresses
from datetime import datetime

# IMAP服务器的地址、端口和使用的SSL
HOST = "imap.gmail.com"
PORT = 993
USE_SSL = True

# 登录凭证
username = "[email protected]"
password = "xxxxxxxxx"

# 创建IMAP4_SSL对象并登录
server = imaplib.IMAP4_SSL('imap.qq.com')
server.login(username, password)

获取邮箱中的文件夹

status, folders = server.list()
if status == 'OK':
    for folder in folders:
        print(folder.decode(('utf-8')))

获取邮件列表

# 选择收件箱
server.select('INBOX')  # 选择收件箱-INBOX(选择邮件的文件夹,通常是'INBOX')

# 获取邮件列表
status, messages = server.search(None, "ALL")  # 获取所有邮件,(ALL表示所有邮件,UNSEEN表示未读邮件,SEEN表示已读邮件)

可指定邮件时间获取对应范围内容的邮件

# 可指定时间范围(例如:2024年1月1日到2025年1月1日)
since_date = datetime(2024, 12, 1).strftime("%d-%b-%Y")
before_date = datetime(2024, 12, 30).strftime("%d-%b-%Y")
status, messages = server.search(None, "ALL", f"SINCE {since_date}", f"BEFORE {before_date}")

解析邮件信息和获取邮件的UID

if messages:
    for msgId in messages[0].split():  # 获取邮件的UID
        status, data = server.fetch(msgId, '(RFC822)')
        if status == 'OK':
            msg = email.message_from_bytes(data[0][1])  # 解析邮件
获取标题
            # 邮件标题获取
            subject, email_encoding = decode_header(msg['subject'])[0]
            if isinstance(subject, bytes):
                subject = subject.decode(email_encoding if email_encoding else 'utf-8')
获取发件人信息 
            # 获取发送人信息
            from_ = msg['From']
            if from_ is None:  # 防止from_为空报错
                from_ = ''
            sender_name, sender_email = parseaddr(from_)  # 使用 parseaddr 解析发件人信息,名称和邮箱,注意获取到的名称是没有解析的

            from_name, encoding = decode_header(msg['From'])[0]  # 获取发件人名称
            if isinstance(from_name, bytes):
                from_name = from_name.decode(encoding if encoding e

作者:觅远

物联沃分享整理
物联沃-IOTWORD物联网 » python+imaplib+email实现邮箱数据读取、附件下载、条件删除

发表回复