我正在接收转发电子邮件到我的rails 3应用程序并且正常工作。
但在转发的电子邮件中,它在顶部包含以下消息,例如:
Begin forwarded message:
From: roger rabbit <sales@mysite.com>
Date: 23 May 2011 13:52:08 GMT+01:00
To: sam@yoursite.com
Subject: Hi threre
Dear Mike
Yes please do the work for me!
此格式会更改哪个电子邮件客户端发送邮件。
我想将其脱离身体,这样我就可以像这样显示转发的消息:
Dear Mike
Yes please do the work for me!
最好的方法是什么,因为我知道我可以为这种特定的格式做到这一点,但我需要它更通用/更聪明。
我应该使用一些gem / lib吗?
任何帮助都会很棒。
谢谢Rick
答案 0 :(得分:0)
我没有听说过有用的宝石或图书馆,但我的第一个问题是:
对于数字1:我会猜测在大多数(希望是所有)情况下,你想要丢弃“From:”行上方的任何行。因此,找到“From:”所在的行号(可能通过正则表达式),删除上面的所有行。这样可以避免获得不同电子邮件客户端提出的“Begin forwarded message:”的所有变体。
对于数字2:使用正则表达式检查电子邮件标题信息。检查“From:”或“To:”等的东西绑定到行的开头,然后删除该行匹配。
我会尝试尽可能多的测试用例(示例转发的电子邮件)以确保您的系统正常运行。一旦你掌握了一些具体的例子,我们就可以继续提供帮助。
答案 1 :(得分:0)
我认为你应该使用String类的split方法。尝试这样的事情:
例如,a - 变量包含您的消息。
b = a.split("\n\r\n", 3) maybe b = a.split("\n\n", 3)
他会根据分隔符(在你的情况下为\ n \ n)将文件划分为子串,并返回这些子串的数组。
所以,最后你应该做以下事情:
c = b[2].to_s
puts c => "Dear Mike \n\nYes please do the work for me!\n"
这不是一个好的解决方案,但这应该有效