有没有一种方法可以与 php 一致地阅读电子邮件(回复)的 body 部分

Is there a way to read parts of the body of an email (the reply) consistently with php

我有一个我正在使用的票务系统,我希望能够让用户回复从票务系统发送的电子邮件。当用户回复时,我希望能够得到该回复并将其作为该票的评论放入我的系统中。

我有一个已经可以连接到邮箱的脚本,获取电子邮件并提取我需要的所有部分(header、主题、body...)并获取这些部分把它们放在我需要的地方。

问题是...

我一直在尝试使用不同的方法来处理 php 的一些内置函数,例如 imap_fetchbodyimap_fetchstructure,但它似乎要么不一致 and/or 实际上只能提取对电子邮件的回复,除此之外别无他法。

有些问题是当用户回复电子邮件时(取决于他们使用的提供商)将更多信息附加到回复中,从而成为 body 的一部分并给我的脚本造成更多混乱。

我在 body 的 html 中看到的一个半一致的东西是 <div class="body">...</div> 的标签。到目前为止我已经看到gmail和yahoo有这个。我不知道这有多一致,因为我不知道这是我可以从所有电子邮件运营商那里期望的标准,还是只是他们的个人偏好。

我也知道我可以尝试清理电子邮件中引用的文本 body,但还是不够一致。

我也知道我可以在电子邮件中添加一些文本来尝试让用户在一些行之间写文本,这样我就可以找到回复,但并不是所有的用户都会如此一致。

我的问题是

"is there a consistent way I can rely on to be able to pull the reply from the body of an email and ONLY the reply or are there to many "“可能发生的情况会让事情变得困难?”有可能吗?

简答 - 没有。

每个电子邮件客户端和个人处理和"thinks" 回复的方式不同。

例如,有些人"top post",其他人"bottom post"或"inline reply"与原来的

然后你有其他人删除整个原始 post。

您还有使用“>”表示原始邮件的电子邮件客户端,有些使用“:”甚至“|” - 一切皆有可能。

您或许可以找到一些最适合的"rules",但不一定适合所有回复。

我想你可以 运行 一个 diff 反对原来的,但你已经改变了格式以及电子邮件客户端可能已经将原件转换为 HTML 或 HTML 到纯文本。所以这也不会干净地工作。

一种选择是按原样自动插入整个回复,然后提醒管理员 "auto reply" 已添加到票务系统。我发现一个人能够非常快速地清理回复(如果需要的话)或者干脆留下它 "as is" 用于跟踪目的。

"auto reply" 或 "auto insert" 的便利性对大多数人来说已经足够了。

硬盘space便宜,别小看。你需要建立一些非常复杂的规则,这些规则总是在变化。那将是一场噩梦。