我目前正在开发一个系统,允许用户回复发出的通知电子邮件(叹息)。
我需要删除回复和签名,这样我就会留下回复的实际内容,而不会产生任何噪音。
有没有人对最佳方法有任何建议?
答案 0 :(得分:41)
如果您的系统是内部和/或您的回复格式数量有限,则可以做得很好。以下是我们为电子邮件票据的电子邮件回复设置的过滤器:
删除所有文字后包括:
'-- \n'
(标准电子邮件sig分隔符)'--\n'
的行(人们经常忘记sig分隔符中的空格;这不是常见的外部sig)'-----Original Message-----'
开头的行(默认为MS Outlook)'________________________________
'开头的行(32个下划线,再次显示Outlook)'On '
开头并以' wrote:\n'
结尾的行(默认为OS X Mail.app)'From: '
开头的行(故障安全四Outlook和其他一些回复格式)'Sent from my iPhone'
'Sent from my BlackBerry'
数字3和4是'以'开头'而不是'等于',因为有时用户会在意外时将线条压在一起。
我们试图更加自由地剥离回复,因为对于我们来说,回复垃圾比纠正丢失的文本更令人烦恼。
任何人都有其他想要分享的格式吗?
答案 1 :(得分:10)
查看email_reply_parser gem - https://github.com/github/email_reply_parser。它处理这个问题做得很好。
答案 2 :(得分:8)
我不相信你能做到这一点可靠(以'--'
开头的签名,但我不再看到了)。也许你最好让人们在文本标题之间进行回复,然后简单地从中删除回复?它不优雅,但也许更可靠。
e.g。
REPLY BETWEEN HERE -->
AND HERE -->
因此,您只需查找上面所需的标题,然后选择其中的内容。
答案 3 :(得分:3)
如果你想要强大的东西和健壮,不介意阅读学术出版物,你可以查看:
以下是其中一位作者的主页,其中包含更多信息&一些下载:
答案 4 :(得分:1)
只能用于签名的方法(除了检测__或 - )是测试发件人的名字和/或姓氏是否在短行上( 〜包含3到4个单词,最多)。
发件人姓名位于原始电子邮件标题中,大部分时间位于电子邮件地址旁边,例如:
From: John Doe <jdoe@provider.com>
这是基于您很少在电子邮件中写自己的名字的假设,如果您这样做,则可能是长句子。
当然会有一些误报,但它可能不是一个大问题,取决于你做什么(我们使用它将引用的文本和签名折叠成... gmail风格的按钮,所以过度检测不会结束失去任何内容,这只是错位的。)
答案 5 :(得分:0)
如果你可以假设这些电子邮件是纯文本的,只需删除以“&gt;”开头的行。作为回复,“ - ”行应划定签名。但是这些假设可能不起作用,因为并非所有互联网上的人都使用符合规则的软件。
答案 6 :(得分:0)
这是一个非常好的PHP库,专门用于电子邮件解析
答案 7 :(得分:0)
我为 golang 做了一个:https://github.com/web-ridge/email-reply-parser 它检测到像
这样的签名Karen The Green
Graphic Designer
Office
Tel: +44423423423423
Fax: +44234234234234
karen@webby.com
Street 2, City, Zeeland, 4694EG, NL
www.thing.com
The content of this email is confidential and intended for the recipient specified in message only. It is strictly forbidden to share any part of this message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.
Met vriendelijke groeten,
Richard Lindhout
答案 8 :(得分:-2)
recommended signature delimiter是“ - \ n”。如果人们遵循这一建议,剥离签名应该很容易。