在日常开发中,我们有时需要处理电子邮件数据。Python标准库中的 mailbox 模块提供了一种便捷的方式来读取、解析和操作各种邮箱格式文件,尤其是常见的 mbox 格式。本教程将手把手教你如何使用 Python mailbox库 来读取和处理邮箱文件,即使你是编程小白也能轻松上手!

mbox 是一种历史悠久的电子邮件存储格式,它将多封邮件以纯文本形式连续保存在一个文件中。每封邮件以 From 开头(注意后面有个空格),非常适合用于备份或迁移邮件数据。
首先,确保你有一个 mbox 格式的邮箱文件(例如 inbox.mbox)。如果你没有,可以从邮件客户端(如 Thunderbird)导出,或者用下面的代码创建一个测试文件。
Python 的 mailbox 模块是标准库的一部分,无需额外安装。下面是一个完整的示例,展示如何读取 mbox 文件并提取每封邮件的主题和发件人:
import mailboxdef read_mbox_file(filepath): # 打开mbox文件 mbox = mailbox.mbox(filepath) # 遍历每封邮件 for message in mbox: # 获取邮件主题 subject = message['subject'] if subject is None: subject = "(无主题)" # 获取发件人 sender = message['from'] if sender is None: sender = "(未知发件人)" print(f"发件人: {sender}") print(f"主题: {subject}") print("-" * 40)# 调用函数(请替换为你的mbox文件路径)read_mbox_file('inbox.mbox')除了基本的头部信息(如主题、发件人),你还可以获取邮件正文。由于邮件可能包含 HTML 或纯文本,我们需要判断内容类型:
import mailboxfrom email.message import EmailMessagedef extract_email_body(message: EmailMessage): body = "" if message.is_multipart(): for part in message.walk(): content_type = part.get_content_type() content_disposition = str(part.get('Content-Disposition')) # 跳过附件 if "attachment" not in content_disposition: if content_type == "text/plain": body = part.get_payload(decode=True).decode(errors='ignore') break # 优先使用纯文本 elif content_type == "text/html" and not body: body = part.get_payload(decode=True).decode(errors='ignore') else: body = message.get_payload(decode=True).decode(errors='ignore') return body[:200] + "..." if len(body) > 200 else body# 使用示例mbox = mailbox.mbox('inbox.mbox')for msg in mbox: print("主题:", msg['subject']) print("正文预览:", extract_email_body(msg)) print("=" * 50)decode(errors='ignore') 避免程序崩溃。通过本教程,你已经掌握了如何使用 Python mailbox库 来读取和解析 mbox 格式的邮箱文件。无论是进行邮件数据分析、备份迁移,还是自动化处理,这项技能都非常实用。记住关键词:Python mailbox库、邮箱格式解析、Python读取邮箱文件 和 mbox格式处理,它们将帮助你在搜索引擎中快速找到相关资源。
现在就动手试试吧!如果你有任何问题,欢迎在评论区留言交流。
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122694.html