gpt4 book ai didi

PHP解析gmail邮件回复

转载 作者:行者123 更新时间:2023-12-04 04:38:51 25 4
gpt4 key购买 nike

我正在尝试解析 GMail 电子邮件,但有一个问题:我如何知道回复对应于哪条消息?

我尝试按主题对电子邮件进行排序。例如,如果邮件主题为“hi Jack”,则所有主题为“Re: hi Jack”的邮件都是对此邮件的回复。

但是如果我有很多相同主题的电子邮件怎么办?我怎么知道他们回复的是哪封电子邮件?

电子邮件是否可能有一个唯一的代码来表示回复的内容?也许有一个 ID 或类似的东西来知道消息的子级是什么(?)。

最佳答案

按主题划分主题不是一个好主意,因为您可能注意到基于相同主题的多个不同主题。

您需要检查消息中的 3 个 header 以使线程(或其他类型的分组)成为可能:
Message-ID: 在由 <> 字符包围的字符串中包含唯一的消息标识符(您称之为“唯一代码”),例如<123456@User1PC> 大多数 MUA 会以上述形式或类似的形式创建标识符。发送新消息时应生成此 header 。
In-Reply-To: 包含与此特定回复相关的消息,例如<789abcd@User2PC> 。此 header 应从它回复的 Message-ID 复制。
References: 包含最近引用此“线程”中的消息的列表。格式与上面类似,只是它们是分开的,例如<123456@User1PC> <789abcd@User2PC> 它在那里,以便您可以使用它来定位线程中的消息。

如果几天后回复或发布了一条消息,如果没有引用列表,可能很难找到它。通常引用列表由邮件客户端修剪到合理的大小。合理的,我的意思是,修剪它足以能够在线程中定位消息,但将标题保持在合理的大小(没有太多引用)。例如,它可能包含 5-10 个引用,通常足以将其连接到其他消息。如果原始消息(第一条)已被删除,References: 也很有用,因此即使没有它,您仍然可以利用 References: 列表来构建线程(分组)消息。

因此,为了线程化消息,您需要阅读所有消息,然后根据可以从上述标题中提取的信息对线程进行排序。

如果引用或消息 ID 不是您可以识别的形式(例如 <example@something>,您可以通过不线程化这些消息并将它们显示为未线程化来退出。因此,用于线程化/定位的通用算法可能如下所示:

  • 取第一个消息 ID
  • 检查附近的(按日期)消息以查看其中一个消息是否在其引用列表或回复中包含消息 ID - 如果没有 - 您无法将其分组,因此将其保留为独立消息。
  • 以某种方式分组消息,可能基于 Date:Received: header
  • 将此消息放入“完成”列表中,以便您无需进一步检查(或相关引用)
  • 继续,直到找不到更多引用,然后移至“完成”列表中尚未包含的下一条消息并重复步骤,直到处理整个消息列表。

  • 您可能需要一段时间才能正确完成此操作,但现在至少您有一个可以研究的起点。

    关于PHP解析gmail邮件回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19230689/

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