php – 获取该人刚写的实际电子邮件,不包括任何引用的文字
网站上有两个先前存在的问题.
一个用于 Python,一个用于Java. > Java How to remove the quoted text from an email and only show the new text 我想要能够完全一样(在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的“消息”)看起来很奇怪,如果他们有开创性的回复.使这个工作正常的一个鬼祟的方法是渲染任何引用的行折叠的消息,并包括一个“展开引用的文本”的链接. 将回复与旧邮件分开 正如你所说,第二个解决方案是在你的消息的顶部放置一个描述性的消息,如———请回复上面这行———-,然后删除处理回复时,该行和下面的任何内容.许多系统都这样做,这不是世界上最糟糕的事情,但它确实使您的电子邮件看起来更“自动化”,而不是个人(在我看来). 剥离引用文本 最后一个解决方案是简单地删除任何以>,开头的新行,这可能是来自回复电子邮件的引用行.大多数电子邮件客户端使用此方法指示引用的文本.这里有一些正则表达式(在PHP中)可以做到这一点: $clean_text = preg_replace('/(^w.+:n)?(^>.*(n|$))+/mi','',$message_body); 使用这种更简单的方法有一些问题: >许多电子邮件客户端还允许人们引用较早的电子邮件,并将这些引号与>所以你会剥离报价. 当然,测试是关键,权衡可能对您的特定系统来说是值得的.因人而异. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |