从电子邮件签名和答复
我目前正在开发一个系统,允许用户回复发送( 叹息 )的通知邮件。
我需要删除答复和签名,以便留下答复的实际内容,没有任何噪音。
有没有人有任何build议最好的办法做到这一点?
如果您的系统是内部的和/或您的回复格式数量有限,那么可以做一个很好的工作。 以下是我们为电子邮件回复trac ticket设置的filter:
删除所有文本后,包括:
- 等于
'-- \n'
(标准电子邮件sig分隔符) - 等于
'--\n'
(人们常常忘记了sig定界符中的空格;这不是常见的外部sigs) - 以
'-----Original Message-----'
开头的行(MS Outlook默认) - 以
'________________________________
”开头的行(32个下划线,Outlook再次) - 以
'On '
开始并以'On '
结尾' wrote:\n'
(OS X Mail.app默认值) - 以
'From: '
开头的行(可以保护四个Outlook和其他一些回复格式) - 以
'Sent from my iPhone'
开头的行 - 以
'Sent from my BlackBerry'
开始的行
数字3和4是“开始”,而不是“等于”,因为有时候用户会在意外时挤压线条。
我们试图更加自由地解决答复,因为对于纠正丢失的文本来说,更多的烦恼(对我们来说)有垃圾回复。
任何人都有他们想分享的其他格式?
我不相信你可以做到这一点可靠 (签名曾经以'--'
开头,但我不再看到这一点)。 也许你最好让人们在文本标题之间回复,然后简单地从这里删除答复? 这不是优雅,但也许更可靠。
例如
REPLY BETWEEN HERE --> AND HERE -->
所以你只需要在上面find所需的标题,并采取什么中间。
查看email_reply_parser gem – https://github.com/github/email_reply_parser 。 它处理这个问题做得很好。
如果你想要一些function强大的,不介意阅读学术刊物,你可以看看这个:
- 学习从电子邮件中提取签名和回复行
这是一个作者的主页,更多的信息和一些下载:
- Vitor R. Carvalho – 软件和数据集 – (Vitor Carvalho)
如果您可以假定这些电子邮件是纯文本的,只需将以“>”开头的行作为回复,“ – ”行应该划定签名。 但是这些假设可能行不通,因为不是所有的互联网用户都使用符合规则的软件。
只能用于签名的方法(除了检测__或 – 之外)是为了testing发件人的名字和/或姓是否在短线 (〜最多包含3到4个字)。
发件人姓名位于原始电子邮件标题上,大部分时间位于电子邮件地址旁边,如下所示: From: John Doe <jdoe@provider.com>
这是基于这样的假设:你很less在电子邮件中写下自己的名字,如果你这样做了,那可能是一个长长的句子。
当然会有一些误报,但是根据你做什么(我们用它来把引用的文本和签名放到一个… Gmail风格的button中,这可能不会是一个大问题,所以过度检测并不会最终导致丢失任何内容,它只是错位)。
有一个非常好的PHP库专用于电子邮件parsing
推荐的签名分隔符是“ – \ n”。 如果人们遵循这个build议,剥离签名应该很容易。