AnA*_*ice 5 ruby-on-rails actionmailer ruby-on-rails-3
我将我的应用设置为通过服务中的帖子接收传入的电子邮件.接收帖子的控制器看起来有点像这样:
class IncomingMailsController < ApplicationController
require 'mail'
skip_before_filter :verify_authenticity_token
def create
message = Mail.new(params[:message])
message_plain = (params[:plain])
Rails.logger.info 'message2.plain:'
Rails.logger.info message2
render :text => 'success', :status => 200 # a status of 404 would reject the mail
end
end
Run Code Online (Sandbox Code Playgroud)
这成功地传递了整个电子邮件,回复,转发历史等.问题是我希望能够只提取实际的回复文本.
目前我得到:
That's not a bad idea. Lets try that out.
On Nov 17, 2010, at 4:18 PM, XXXXX @ XXXXXXXX wrote:
> There's a new reply:
Run Code Online (Sandbox Code Playgroud)
我想知道rails devs如何获得回复:
That's not a bad idea. Lets try that out.
Run Code Online (Sandbox Code Playgroud)
想法?谢谢
没有保证可以获取完整消息的方法,但通常的做法是使用分隔符,然后使用一些代码来解析响应行。
例如,如果您查看开源项目 teambox 中的代码,您会看到与以下内容非常相似的内容:
def strip_responses(body)
# For GMail. Matches "On 19 August 2010 13:48, User <proj+conversation+22245@app.teambox.com<proj%2Bconversation%2B22245@app.teambox.com>> wrote:"
body.strip.
gsub(/\n[^\r\n]*\d{2,4}.*\+.*\d@app.teambox.com.*:.*\z/m, '').
split("---------separator---------").first.
split("<div class='email'").first.
strip
end
Run Code Online (Sandbox Code Playgroud)