将电子邮件回复文本与旧消息分离

4
我正在处理电子邮件信息/工单系统。
逻辑:
1. 客户在网站上开始新的工单,这些内容被存储在数据库中。 2. 我会在收件箱中收到有关新工单的电子邮件(由网站生成,主题行带有唯一的“ID”)。 3. 回复电子邮件(回复电子邮件地址为例如“tickets@example.com”)。 4. PHP cron 脚本读取收件箱,获取所有消息,将它们存储到数据库并生成邮件发送给客户。 5. 客户回复电子邮件(回复电子邮件地址为“tickets@example.com”,主题行带有“ID”)。
问题:
我如何从电子邮件中读取新的回复文本和旧的回复文本? 邮件回复示例:
Envelope-to: tickets@example.com
From: client@example.com
To: tickets@example.com
Subject: Re: New Ticket: "Project #1" (ID: 15)
Message-ID: <70c4e4c182e6eb10c0e45feefa4ce9cg@example.com>

This is reply to message.

On 2014-05-13 09:04, Client wrote:
> This is text
> 
>  ----
>  Best Regards,
>  Client

我需要只显示最新的回复。客户可以在底部或顶部(实际上任何位置)编写回复,使用任何邮件客户端,并且我打赌 - 很多邮件客户端都有不同的格式...

你有什么建议吗?


找到类似的问题:https://dev59.com/nG435IYBdhLWcg3wlBGD - Vaidas
1个回答

2
如果我需要解决这个问题,我会使用某种“diff”系统。我不知道PHP是否有这样的系统,但我相信它确实存在。
更技术一些,如果您有一种方法来比较邮件,那么我会取出没有标题的原始邮件(我们称其为邮件A)和没有标题的新邮件(邮件B)。然后只需将邮件A与B进行比较,看看差异在哪里。添加的行是用户的响应。
有些事情您需要自己查找,因为我此时还没有答案:
- 如果用户没有发送原始消息怎么办?例如,您可以仅使用从diff中添加的行,而不使用删除的行。 - 如果用户在您的响应中内联更改了某些内容怎么办?我不知道如何解决这个问题。
我的解决方案实际上是不要给用户太多自由。只需准备一个地方,让用户编写他们的消息。例如:“在以下行之间或上面编写您的消息”。然后您就知道在哪里查找文本。
您给予的自由越多,对您来说就越困难。您可以从简单的系统开始,逐渐提高系统的智能性。这就是我大多数时候的做法:从简单的东西开始,逐渐增加难度。

我认为当Gmail出现三个点时,可能是为了播放中间部分。此外,他们进行差异比较并实际突出显示差异(可能最初是作为开发工具开始的)。无论如何,他们隐藏了一些东西,但如果您单击这些点,您就可以看到其余部分。 - dansch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接