由于Gmail中缺少MESSAGE-ID标头,无法将邮件保留在同一对话中

由于Gmail中缺少MESSAGE-ID标头,无法将邮件保留在同一对话中,gmail,imap,gmail-api,Gmail,Imap,Gmail Api,在Gmail中的某些邮件中,MESSAGE-ID标题缺失,我需要在回复时将其用作in-REPLY-to标题,以便在同一对话中保留回复。 当那些缺少MESSAGE-ID标题的电子邮件从Gmail的WEB用户界面中回复时,回复会停留在对话中,而回复实际上会获得一个in-reply-TO标题,看起来像,我无法发现这是如何生成的 我一直在试图找到解决这个问题的方法,最后尝试了一些桌面电子邮件客户端,Airmail和Sparrow,看看它们的行为。如果我使用这些电子邮件客户端回复缺少MESSAGE-ID标

在Gmail中的某些邮件中,
MESSAGE-ID
标题缺失,我需要在回复时将其用作
in-REPLY-to
标题,以便在同一对话中保留回复。 当那些缺少
MESSAGE-ID
标题的电子邮件从Gmail的WEB用户界面中回复时,回复会停留在对话中,而回复实际上会获得一个
in-reply-TO
标题,看起来像
,我无法发现这是如何生成的

我一直在试图找到解决这个问题的方法,最后尝试了一些桌面电子邮件客户端,Airmail和Sparrow,看看它们的行为。如果我使用这些电子邮件客户端回复缺少
MESSAGE-ID
标题的特定电子邮件,则发送的回复也会获得相同的
IN-reply-TO
标题
,并且回复确实保持与预期相同的对话


因此,我想问他们是如何做到这一点的,他们是否以某种方式生成了
回复中的
标题
?这是一个典型的问题,每个邮件阅读器都有它。经典的解决方案是:

  • 从您回复的邮件(如果有)中复制引用字段
  • 在回复中填写一个字段,可以填写一个虚构的邮件id,也可以填写发件人地址和邮件日期
  • 保留主题,并附加“re:”
  • 您还可以复制线程索引字段(如果有)
Gmail和大多数其他线程算法将连接这些点


线程索引是微软的东西,据我所知,没有人使用它。十六进制blob的格式没有指定,但是如果原始邮件来自Exchange,那么复制可能有助于Exchange。

这是一个典型问题,每个邮件阅读器都有它。经典的解决方案是:

  • 从您回复的邮件(如果有)中复制引用字段
  • 在回复中填写一个字段,可以填写一个虚构的邮件id,也可以填写发件人地址和邮件日期
  • 保留主题,并附加“re:”
  • 您还可以复制线程索引字段(如果有)
Gmail和大多数其他线程算法将连接这些点


线程索引是微软的东西,据我所知,没有人使用它。没有指定十六进制blob的格式,但如果原始邮件来自Exchange,复制可能会有助于Exchange。

如果您只想发送一封电子邮件,并确保它与该用户收件箱中的另一封电子邮件(而不是任何其他可能收到回复的gmail用户)连接然后,我相信您可以使用Gmail API的messages.send()方法,并将message.threadId设置为与您希望它执行的线程相匹配。

如果您只想发送一封电子邮件,并确保它在该用户的收件箱中执行另一封电子邮件(而不是任何其他可能收到回复的Gmail用户)然后,我相信您可以使用Gmail API的messages.send()方法,并将message.threadId设置为与您希望它执行的线程相匹配。

我不认为发送到您Gmail帐户的电子邮件没有消息id。我的证据是,我只是尝试在没有消息id的情况下通过telnet向自己发送一封邮件,gmail的mx服务器添加了这个

消息Id:

可能是将邮件复制到gmail的imap存储中会导致邮件id丢失。例如,请参阅(虽然这已经很旧了,但它表明将邮件同步到gmail imap帐户可能会导致此结果)


电子邮件的基本规则是,如果电子邮件由于任何原因没有消息id,则会为其创建一个消息id,这就是此处发生的情况。因此,当你回复时,在回复邮件头中会使用虚构的邮件id。

我不认为发送到你的gmail帐户的电子邮件没有邮件id。我的证据是,我只是试图通过telnet发送一封邮件给自己,但没有邮件id,gmail的mx服务器添加了这一点

消息Id:

可能是将邮件复制到gmail的imap存储中会导致邮件id丢失。例如,请参阅(虽然这已经很旧了,但它表明将邮件同步到gmail imap帐户可能会导致此结果)


电子邮件的基本规则是,如果电子邮件由于任何原因没有消息id,则会为其创建一个消息id,这就是此处发生的情况。因此,当您回复时,在回复标题中会使用虚构的邮件id。

谢谢您的回答。没有
引用
字段。我在回复
字段时创建了一个
,并用“Re:”来定义主题。然而,这并没有起到任何作用。如果为原始消息发出FETCH X-GM-MSGID和X-GM-THRID,您会得到什么?两者的值相同:1481120112720671773。这是线程id 148DFEE52C66F41D的十进制数,我想知道是否存在与-4185615914882731559的未记录关系。显然不是。我试着通过几封电子邮件寻找一种模式/关系,但我找不到任何模式/关系。谢谢你的回答。没有
引用
字段。我在回复
字段时创建了一个
,并用“Re:”来定义主题。然而,这并没有起到任何作用。如果为原始消息发出FETCH X-GM-MSGID和X-GM-THRID,您会得到什么?两者的值相同:1481120112720671773。这是线程id 148DFEE52C66F41D的十进制数,我想知道是否存在与-4185615914882731559的未记录关系。显然不是。我试着用几封电子邮件来寻找模式/关系,但我找不到任何模式/关系。你能不能把没有
消息Id
的原始消息以及GMail创建的作为回复的消息的所有标题都发出去?在实验过程中,我丢失了丢失
消息Id
的电子邮件。问题随机发生,所以我无法确定