加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 获取该人刚写的实际电子邮件,不包括任何引用的文字

发布时间:2020-12-13 14:07:24 所属栏目:PHP教程 来源:网络整理
导读:网站上有两个先前存在的问题. 一个用于 Python,一个用于Java. Java How to remove the quoted text from an email and only show the new text Python Reliable way to only get the email text,excluding previous emails 我想要能够完全一样(在PHP中).我创
网站上有两个先前存在的问题.
一个用于 Python,一个用于Java.

> Java How to remove the quoted text from an email and only show the new text
> Python Reliable way to only get the email text,excluding previous emails

我想要能够完全一样(在PHP中).我创建了一个邮件代理,其中两个人可以通过电子邮件发送一个唯一的电子邮件地址在一起.
我发现的问题是,当一个人收到电子邮件并发回答时,我正在努力准确地捕获他撰写的文字,并丢弃了之前的通话中引用的文字.

我正在寻找一个可以用于HTML电子邮件和Plaintext电子邮件的解决方案,因为我正在发送两个.

我也有能力,如果它有助于插入一些< ***** RESPOND此处*******>标签如果在电子邮件中必要,这意味着我可以丢弃以下所有内容.

你会建议我做什么?总是将该标签添加到HTML副本和明文副本中,然后抓住其上的所有内容?

我仍然会留下知道每个邮件客户端如何创建响应的场景.因为Gmail会这样做:

On Wed,Nov 2,2011 at 10:34 AM,Message Platform <35227817-7cfa-46af-a190-390fa8d64a23@dev.example.com> wrote:
## In replies all text above this line is added to your message conversation ##

任何建议或建议的最佳做法?

或者我应该抓住50个最受欢迎的邮件客户端,并开始为每个客户端创建自定义正则表达式.然后对于每个这些客户端,也是一个不同的区域设置,因为我猜测用户的区域设置也会影响添加的内容.

或者我应该总是删除前一行,如果它包含一个日期?等等

不幸的是,如果您想要仔细清理电子邮件(删除不是实际回复电子邮件本身的所有内容),您将受到伤害的世界.理想的方式是,正如你所建议的,为每个流行的电子邮件客户端/服务写出正则表达式,但这是一个非常可笑的工作量,我建议 being lazy and dumb.

有趣的是,即使Facebook engineers有这个问题的麻烦,还有Google has a patent的“检测引用文本”的方法.

有三种解决方案可以接受:

不要管它

第一个解决方案是将消息中的所有内容都留下.大多数电子邮件客户端都这样做,没有人会抱怨.当然,在线消息系统(如Facebook的“消息”)看起来很奇怪,如果他们有开创性的回复.使这个工作正常的一个鬼祟的方法是渲染任何引用的行折叠的消息,并包括一个“展开引用的文本”的链接.

将回复与旧邮件分开

正如你所说,第二个解决方案是在你的消息的顶部放置一个描述性的消息,如———请回复上面这行———-,然后删除处理回复时,该行和下面的任何内容.许多系统都这样做,这不是世界上最糟糕的事情,但它确实使您的电子邮件看起来更“自动化”,而不是个人(在我看来).

剥离引用文本

最后一个解决方案是简单地删除任何以&gt,开头的新行,这可能是来自回复电子邮件的引用行.大多数电子邮件客户端使用此方法指示引用的文本.这里有一些正则表达式(在PHP中)可以做到这一点:

$clean_text = preg_replace('/(^w.+:n)?(^>.*(n|$))+/mi','',$message_body);

使用这种更简单的方法有一些问题:

>许多电子邮件客户端还允许人们引用较早的电子邮件,并将这些引号与>所以你会剥离报价.
>通常,引用的电子邮件上面有一行,例如On [date],[person]说.该行很难删除,因为它在不同的电子邮件客户端之间的格式不一样,并且可能是您删除的引用文本之上的一行或两行.在我的PHP Imap库中,我实现了这种检测方法,取得了很大的成功.

当然,测试是关键,权衡可能对您的特定系统来说是值得的.因人而异.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读