PHP解析gmail邮件回复
我正在尝试解析GMail电子邮件,但有一个问题:我如何知道回复对应的是哪封邮件 我试着按主题对电子邮件进行分类。例如,如果邮件主题为“hi-Jack”,则所有主题为“Re:hi-Jack”的邮件都是对此邮件的回复 但是,如果我有许多主题相同的电子邮件,我该怎么办?我如何知道他们回复的是哪封电子邮件PHP解析gmail邮件回复,php,parsing,email,gmail,Php,Parsing,Email,Gmail,我正在尝试解析GMail电子邮件,但有一个问题:我如何知道回复对应的是哪封邮件 我试着按主题对电子邮件进行分类。例如,如果邮件主题为“hi-Jack”,则所有主题为“Re:hi-Jack”的邮件都是对此邮件的回复 但是,如果我有许多主题相同的电子邮件,我该怎么办?我如何知道他们回复的是哪封电子邮件 电子邮件是否对回复的目的地有唯一的编码?可能有一个ID或类似的东西来知道消息的子消息是什么(?)按主题线程不是一个好主意,因为正如您所注意到的,可能有几个基于相同主题的不同线程 您需要检查消息中的3个
电子邮件是否对回复的目的地有唯一的编码?可能有一个ID或类似的东西来知道消息的子消息是什么(?)按主题线程不是一个好主意,因为正如您所注意到的,可能有几个基于相同主题的不同线程 您需要检查消息中的3个标题,以使线程(或其他类型的分组)成为可能:
消息ID:
包含一个字符串中的唯一消息标识符(您称之为“唯一代码”),该字符串由
字符包围,例如
大多数MUA将以上述形式或类似形式创建标识符。发送新邮件时应生成此标头
回复:
包含与此特定回复相关的消息,例如
。此标题应从其答复的邮件ID
中复制
引用:
包含此“线程”中最近对消息的引用列表。该格式与上述格式类似,只是它们是分开的,例如,
它就在那里,以便您可以使用它在线程中定位消息
如果一条消息在几天后被回复或发布,如果没有参考列表,可能很难找到它。通常,邮件客户端会将引用列表修剪到合理的大小。所谓合理,我的意思是,对它进行足够的修剪,以便能够在线程中定位消息,但保持头的合理大小(没有太多引用)。例如,它可能包含5-10个引用,通常足以将其连接到其他消息<代码>引用:在原始邮件(第一封)已被删除的情况下也很有用,因此即使没有原始邮件,您仍然可以利用引用:
列表构建线程化(分组)邮件
因此,为了使消息线程化,您需要读取所有消息,然后根据可以从上述头中提取的信息对线程进行排序
如果引用或消息ID的格式不符合您可以识别的格式(例如,
),您可以通过不对这些消息进行线程化并将其显示为非线程化来摆脱。因此,线程化/定位的通用算法可能如下所示:
日期:
,或接收:
标题你可能需要一段时间才能把这件事做好,但现在至少你有了一个出发点。我试图为你澄清一些措辞,但你能解释一下最后一句话的意思吗?具体来说,“所有电子邮件都有唯一的代码和回复”部分让我困惑。这是一个陈述还是一个问题?你的意思是“to”还是“too”?第一步:。第二步:仇恨生活。@Gray这句话的意思是,消息有任何
id
来分配回复消息吗?@TomasLietuva好的,我更新了它。这对你来说还有意义吗?@Gray我正在处理消息。。。