gpt4 book ai didi

python - 使用 Python 解析 Thread-Index 邮件头

转载 作者:太空狗 更新时间:2023-10-29 18:30:34 24 4
gpt4 key购买 nike

一些邮件客户端,不设置References headers,而是设置Thread-Index

有没有办法在 Python 中解析这个 header ?

相关:How does the email header field 'thread-index' work?

邮件 1

Date: Tue, 2 Dec 2014 08:21:00 +0000
Thread-Index: AdAOBz5QJ/JuQSJMQTmSQ8+dVs2IDg==

邮件 2(与邮件 1 相关)

Date: Mon, 8 Dec 2014 13:12:13 +0000
Thread-Index: AdAOBz5QJ/JuQSJMQTmSQ8+dVs2IDgE4StZw

更新

我希望能够在我的应用程序中链接这两封邮件。它已经完美地适用于众所周知的 ReferencesIn-Reply-To header 。

最佳答案

使用信息here , 我能够将以下内容放在一起:

import struct, datetime

def parse_thread_index(index):

s = index.decode('base64')

guid = struct.unpack('>IHHQ', s[6:22])
guid = '{%08X-%04X-%04X-%04X-%12X}' % (guid[0], guid[1], guid[2], (guid[3] >> 48) & 0xFFFF, guid[3] & 0xFFFFFFFFFFFF)

f = struct.unpack('>Q', s[:6] + '\0\0')[0]
ts = [datetime.datetime(1601, 1, 1) + datetime.timedelta(microseconds=f//10)]

for n in range(22, len(s), 5):
f = struct.unpack('>I', s[n:n+4])[0]
ts.append(ts[-1] + datetime.timedelta(microseconds=(f<<18)//10))

return guid, ts

给定一个线程索引,它返回一个元组 (guid, [list of dates])。对于您的测试数据,结果是:

 > parse_thread_index('AdAOBz5QJ/JuQSJMQTmSQ8+dVs2IDgE4StZw')
('{27F26E41-224C-4139-9243-CF9D56CD880E}', [datetime.datetime(2014, 12, 2, 8, 9, 6, 673459), datetime.datetime(2014, 12, 8, 13, 11, 0, 807475)])

我手头没有足够的测试数据,所以这段代码可能有问题。请随时告诉我。

关于python - 使用 Python 解析 Thread-Index 邮件头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com