处理无日期信息的邮件,解决MIME中无Date字段的邮件

通常情况下,MIME格式的邮件信息头中有Date字段,用于记录邮件发送时间,常用的邮件处理库也会从该字段中读取时间。
但是依然会遇到一些邮件中没有Date字段,这些邮件一般是系统邮件,一些字段参数没有设置完整导致信息缺失。此时可以尝试从一些其他字段中获取时间。

  1. 从Received字段尝试获取。
  2. 如果是QQ邮箱的邮件,还可以从X-QQ-mid字段尝试获取。

以上两种方法能获取到绝大部分的邮件时间信息。
当然依然有一些邮件也不存在以上字段,甚至MIME源数据中根本没有时间相关的信息。这时候仅从邮件源数据是无法获取到的,只能依靠邮件服务器记录的邮件接收时间。

MIME邮件源数据

MIME邮件源数据的信息头格式通常如下:
邮件源数据

Received字段

如果没有Date,那么可以尝试从Received中获取。

Received: from 117.10.116.6 (unknown [10.1.214.146])
by mail.12306.cn (Postfix) with ESMTP id 807EEE1779
for abcdeftest@foxmail.com; Wed, 14 Apr 2021 16:25:55 +0800 (CST)

可以搜索最后一个分号,分号后的内容为时间。

X-QQ-mid字段

如果Received也没有,且又是QQ邮箱下的邮件,可以使用X-QQ-mid字段。
X-QQ-mid字段格式如下:

X-QQ-mid: mxxfb68t1618388753tyznf4kea

其中1618388753就是这封邮件的unix时间戳,前后加上t来分割。

可以用以下正则来搜索:

re.findall('t[0-9]{10}t', str_content)

都没有

如果都没有,那么可以自行从源数据中找找是否有其他字段包含了时间信息。
确实有一些邮件存在信息缺失,尤其是系统邮件,比如这封QQ音乐的通知邮件:
信息缺失邮件源数据
甚至连接收者都没有,这种通常是内部直接调用了邮箱的接口,难以在POP3或IMAP4协议下通过MIME源数据获取基本信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值