You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析mbox文件并按日期统计邮件数量?求技术实现指导

解析Mbox文件并按日期分组统计邮件数量

用Python的mailbox库配合email.utils模块就能实现这个需求,核心是解析邮件头里的Date字段,再按指定日期维度分组计数。

完整实现代码

import mailbox
from email.utils import parsedate_to_datetime
from datetime import datetime

def count_emails_by_date(mbox_path):
    date_counts = {}
    # 打开目标mbox文件
    mbox = mailbox.mbox(mbox_path)
    
    for message in mbox:
        # 提取邮件的Date头部信息
        date_header = message.get('Date')
        if not date_header:
            continue  # 跳过无日期字段的邮件
        
        try:
            # 将邮件日期字符串解析为标准datetime对象(兼容多种邮件日期格式)
            email_datetime = parsedate_to_datetime(date_header)
            # 按「年-月-日」生成分组键,可根据需求修改格式
            date_key = email_datetime.strftime('%Y-%m-%d')
            # 更新对应日期的邮件计数
            date_counts[date_key] = date_counts.get(date_key, 0) + 1
        except Exception as e:
            print(f"解析日期出错: {e},跳过该邮件")
            continue
    
    # 按日期排序后输出统计结果
    for date, count in sorted(date_counts.items()):
        print(f"{date}: {count} 封邮件")
    
    return date_counts

# 调用示例,替换为你的mbox文件路径
if __name__ == "__main__":
    count_emails_by_date("path/to/your/mailbox.mbox")

关键细节说明

  • 提取日期字段:每封邮件的日期信息存在Date头部,通过message.get('Date')获取,部分邮件可能缺失该字段,直接跳过即可。
  • 解析日期格式:邮件的Date字段格式多样(比如Wed, 15 Nov 2023 10:30:00 +0800),email.utils.parsedate_to_datetime能自动兼容这些格式,转换为标准datetime对象。
  • 自定义分组维度:如果需要按月份统计,把date_key的格式改为'%Y-%m';按年份统计则改为'%Y'即可。
  • 异常处理:部分邮件的日期格式可能不规范,加入异常捕获避免程序崩溃,同时打印错误信息便于排查问题。

内容的提问来源于stack exchange,提问作者Param Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:55:22