PHP - 从电子邮件正文中过滤报价

时间:2016-08-28 22:25:55

标签: php regex email filtering imap

我正在开发一个php电子邮件管道脚本。

就我已经设法获取所需的电子邮件,解析所有必要的数据,但在解析电子邮件正文时我遇到了一个大问题。

由于系统应该是各种转发器(便于客户端与我的软件充当电子邮件存储和转发器之间的通信),我需要从电子邮件正文中删除所有引用和以前的对话,以便电子邮件:

$ strip _sparsetools.cpython-35m-x86_64-linux-gnu.so
$ file _sparsetools.cpython-35m-x86_64-linux-gnu.so
_sparsetools.cpython-35m-x86_64-linux-gnu.so: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed7b8e00c558f234620423315fa9b53274393e72, stripped
$ du -h _sparsetools.cpython-35m-x86_64-linux-gnu.so
3.7M    _sparsetools.cpython-35m-x86_64-linux-gnu.so

变为

Hvala na informaciji

-----------------------------------------

From: "Test" <test@domain.local>
To: "sibin grasic" <sg@mainframe.local>
Sent: Sunday, August 28, 2016 11:50:12 PM
Subject: #131212 - Sibin Grasic - WWW

Ovo je novi upit

我的问题是:

1)是否有可靠的方法来清除电子邮件正文中的引号 - 我知道Google拥有该专利 2)是否有可以进行大量清理的PHP类/库/ PECL模块

我已经尝试了各种正则表达式模式,if-then-else语句的船载,但我没有可靠的方法来清除除最后一个回复之外的所有内容

提前致谢

2 个答案:

答案 0 :(得分:0)

理想的方法是为每个流行的电子邮件客户端/服务编写正则表达式,但这需要非常荒谬的工作量,而且你永远不会100%确定它的工作原理。

在我看来,我建议您在支持/售票系统中为每个消息回复添加分隔符,然后在处理回复时删除该行以及下面的任何内容,而不是尝试使用该方法。许多流行的系统都这样做,没关系。

答案 1 :(得分:0)

你不能只使用preg_match()并从顶部获取所有内容直到-----?然后把那部分转发给那个意味着去的人?