从旧邮件中分离电子邮件回复文本

时间:2014-05-13 09:15:40

标签: php email

我正在研究电子邮件/票务系统。

逻辑:

  1. 客户在网站上启动新票证,该票据存储在数据库中
  2. 我收到有关我的收件箱中新票据的电子邮件(由网站生成,主题行中包含唯一的ID
  3. 回复电子邮件(回复电子邮件地址,例如tickets@example.com
  4. PHP cron脚本读取收件箱,获取所有邮件,将其存储到数据库并生成电子邮件给客户。
  5. 客户回复电子邮件(回复电子邮件地址 - 主题行中tickets@example.com ID
  6. 问题:

    我如何阅读来自email的新回复文字和旧回复文字? Email回复示例:

    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
    

    我只需要最新回复。客户可以在任何mail客户端的底部或顶部(任何地方诚实)写回复,我敢打赌 - 很多mail个客户有不同的格式..

    有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果我需要解决这个问题,我会使用某种“差异”来解决这个问题。系统。我没有&#39;知道PHP是否存在,但我确信它确实存在。

那么更具技术性,如果你有办法区分邮件。我会把没有标题的原始邮件(让他们称之为邮件A),以及没有标题的新邮件(邮件B)。然后就像比较邮件A和B一样容易,看看有什么区别。添加的行是用户的响应。

你必须自己寻找一些东西,因为我现在还不知道答案:

  • 如果用户没有发送原始邮件怎么办?例如,您可以仅使用从差异中添加的行,而不是那些已删除的行。
  • 如果用户在您的回复中内联更改了内容,该怎么办?我不知道如何解决这个问题。

我的解决方案实际上就是不给用户太多的自由。只需准备一个用户应该写信息的地方。类似于:&#34;在以下行之间写下您的信息&lt; line&gt; &lt; line&gt;&#34;,或&#34;&lt; line&gt;将您的信息写在上一行&#34;上方。然后你知道在哪里寻找文本。

你给予的自由越多,对你来说就越难。您可以从一个简单的系统开始,逐步提高系统的智能。这就是我大部分时间的开始:从简单的事情开始,逐渐增加难度。