当前位置: 首页 > 知识库问答 >
问题:

PHP解析gmail邮件回复

翁凯定
2023-03-14

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

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

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

电子邮件是否对回复的目的地有唯一的编码?也许有一个ID或类似的东西可以知道消息的子元素是什么(?)。

共有1个答案

苏鸿卓
2023-03-14

按主题线程不是一个好主意,因为正如您所注意到的,可能有几个基于相同主题的不同线程。

您需要检查消息中的3个标题,以使线程(或其他类型的分组)成为可能:

消息ID:包含唯一消息标识符(您称之为“唯一代码”)的字符串,由

回复:包含与此特定回复相关的消息,例如

引用:包含此“线程”中最近对消息的引用列表。格式与上述类似,只是它们是分开的,例如

如果一条消息在几天后被回复或发布,如果没有参考列表,可能很难找到它。通常,邮件客户端会将引用列表修剪到合理的大小。所谓合理,我的意思是,对它进行足够的修剪,以便能够在线程中定位消息,但保持头的合理大小(没有太多引用)。例如,它可能包含5-10个引用,通常足以将其连接到其他消息<代码>引用:在原始邮件(第一封)已被删除的情况下也很有用,因此即使没有原始邮件,您仍然可以利用引用:列表构建线程化(分组)邮件。

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

如果引用或消息ID不是您可以识别的格式(例如

  1. 取第一个消息ID
  2. 检查附近的(按日期)消息,看看其中一个消息是否包含引用列表中的消息ID,或者如果没有,则不能将其分组,因此将其保持为独立消息。
  3. 以某种方式分组消息,可能基于Date:,或接收到:标头
  4. 将此消息放入完成列表,这样您就不需要进一步检查它(或相关引用)
  5. 继续,直到你找不到任何更多的引用,然后移动到下一条消息,它已经不在“完成”列表中,并重复步骤,直到你处理整个消息列表。

你可能需要一段时间才能把这件事做好,但现在至少你有了一个开始。

 类似资料:
  • 问题内容: 在我的PHP Web应用程序中,我希望在发生某些错误时通过电子邮件收到通知。我想用我的Gmail帐户发送这些。怎么办呢? 问题答案: Gmail的SMTP服务器需要非常特定的配置。 通过Gmail帮助: 您可能可以在Pear :: Mail 或PHPMailer中设置这些设置。查看他们的文档以获取更多详细信息。

  • 在使用IMAP和PHP之前,我从未尝试过获取和移动电子邮件,因此将发送到垃圾箱的电子邮件移回收件箱。 好的,所以我可以正确地从Gmail中提取电子邮件,我可以删除它们,或者将它们移到垃圾箱。 当我尝试将它们移回收件箱时,我收到以下错误: 注意:未知:[TRYCREATE]第0行未知中没有文件夹[Gmail]/收件箱(失败)(errflg=2) 所以很明显,有些事情我不太明白,在过去的几个小时里,我

  • 问题内容: 我正在尝试使用Gmail API来获取用户的电子邮件,获取邮件的主题和正文,然后将其显示在网页上。我将用它来做其他事情,但这是我遇到的困难。我正在使用Angular.js。 这是我的API调用: 因此,返回我的消息数组及其ID号。很好 调用输出this- 。 不确定是什么,但尝试获取消息有效负载(),结果为。那么,如何获得消息内容? 另外,我假设如果我可以获取消息内容,那么我将不得不对

  • 我一直在与Gmail API的意外行为作斗争。 到目前为止,我都是通过邮件获取每封邮件的正文。有效载荷。部分[0]。身体数据,其中包含base64中的消息体。在这种情况下,零件的MimeType为text/plain。 问题是,当我检索的邮件有附件时,parts[0]MimeType是“multipart/alternative”,它的主体只有空字段。 如果邮件正文有附件,我该如何获取它? 谢谢

  • 我正在开发一个WordPress插件,其中我使用PHP邮件功能发送电子邮件,但是邮件功能有一个问题。它向我的非Gmail帐户发送电子邮件,但它不会向我的Gmail帐户发送电子邮件。我正在使用以下代码: 是我的代码有问题,还是邮件功能有问题?如果有其他方法可以发送电子邮件,请给我链接。

  • 我有一个项目,当我的客户在这么多动作后会重新发送邮件时,当我测试我的邮件功能时,当地址是“gmail”时,我会重新发送邮件,但当邮件不是gmail时,邮件不会被重新发送!!!:(这是我的邮件功能: