有没有办法用php一致地阅读电子邮件正文的部分(答复)

时间:2017-03-13 05:26:09

标签: php imap

我有一个我正在处理的故障单系统,我希望能够让用户回复故障单系统发送的电子邮件。当用户回复时,我希望能够获得该回复并将其作为该票证的评论放入我的系统。

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

问题是......

我一直在尝试使用不同的方法来处理一些php内置的函数,例如imap_fetchbodyimap_fetchstructure但它似乎不一致和/或实际上能够只需将回复发送到电子邮件即可。

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

我在身体的html中看到的一个半一致的东西是<div class="body">...</div>的标记。到目前为止我看到gmail和雅虎都有这个。我不知道这是多么一致,因为我不知道它是否是我可以从所有电子邮件运营商那里得到的标准,或者只是个人偏好。

我也明白,我可以尝试清理电子邮件正文中的引用文字,但又不够一致。

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

我的问题是

&#34;是否有一种一致的方式可以依赖于从电子邮件正文中提取回复,而且只有回复或者是有很多&#34;场景&#34;会发生什么事情会让事情变得困难?&#34;它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

简短回答 - 不。

每个电子邮件客户端和个人处理和&#34;认为&#34;关于答复的不同。

例如,某些人&#34;热门帖子&#34;,其他人&#34;底部帖子&#34;或&#34;内联回复&#34;原来的。

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

您还拥有使用&#39;&gt;&#39;对于原作,一些使用&#39;:&#39;甚至是&#39; |&#39; - 一切皆有可能。

你或许可以找到一些&#34;规则&#34;最适合你的,但你不适合所有回复。

我猜您可以针对原始版本运行diff,但之后您已经更改了格式以及可能已将原始文件转换为HTML或从HTML转换为纯文本的电子邮件客户端。因此,我们也不能干净利落地工作。

一种选择是自动插入整个回复 - 按原样 - 然后提醒管理员一个&#34;自动回复&#34;已添加到票务系统。我发现一个人能够非常快速地清理回复(如果需要的话)或者只是将其留下来#34;就像#34;用于跟踪目的。

&#34;自动回复&#34;的便利性或者&#34;自动插入&#34;对大多数人来说已经足够了。

硬盘空间很便宜,不会让小东西出汗。您需要构建一些始终在变化的非常复杂的规则。这将是一场噩梦。