1

Ruby on Railsを使用して、電子メールの本文だけをどのように解析しますか?以下は私が思いついたものです。私は体で主題に取り掛かっています、しかし私が欲しいのは体だけです。TMailや電子メールベースのライブラリを使用せずにこれを解析しようとしています。

公演

<p>Body: <%= @text.parse_body %></p>

コントローラ

  def show
    @text = Text.find(params[:id])
  end

モデル

class Text < ActiveRecord::Base
  attr_accessible :email


  def text_input
      @raw_email = email.to_s
  end

  def parse_body
    @parse_email = @raw_email.match(/(\r\n\r\n[\W\w\S\s\D\d\b]*\r\n)/i)
    @parse_body = @parse_email.to_s.gsub(/<[\W\w\S\s\D\d\b]*?>/, "")
  end

結果@parse_email

\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\r\n<HTML>\r\n<HEAD>\r\n<META   
HTTP-EQUIV=3D\"Content-Type\" CONTENT=3D\"text/html; =\r\ncharset=3Diso-8859-1\">\r\n<META  
NAME=3D\"Generator\" CONTENT=3D\"MS Exchange Server version 
=\r\n6.5.7654.12\">\r\n<TITLE>Test for long subject</TITLE>\r\n</HEAD>\r\n<BODY>\r\n<!-- 
Converted from text/plain format -->\r\n\r\n<P><FONT 
SIZE=3D2>Test<BR>\r\n<BR>\r\n</FONT>\r\n</P>\r\n\r\n</BODY>\r\n" 1:"\r\n\r\n<!DOCTYPE HTML 
PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\r\n<HTML>\r\n<HEAD>\r\n<META HTTP-EQUIV=3D\"Content-
Type\" CONTENT=3D\"text/html; =\r\ncharset=3Diso-8859-1\">\r\n<META NAME=3D\"Generator\" 
CONTENT=3D\"MS Exchange Server version =\r\n6.5.7654.12\">\r\n<TITLE>Test for long 
subject</TITLE>\r\n</HEAD>\r\n<BODY>\r\n<!-- Converted from text/plain format --
>\r\n\r\n<P><FONT SIZE=3D2>Body<BR>\r\n<BR>\r\n</FONT>\r\n</P>\r\n\r\n</BODY>\r\n

@parse_bodyの結果

Body: Test for long subject Body

結果私が取得しようとしています

Body
4

1 に答える 1

5

メールなど、これを行うgemを使用する必要があります。あなたはこれを行うことができます:

mail = Mail.read(@raw_email)
mail.subject
mail.body

可能であれば、このような状況で独自のパーサーを作成することは避けてください。

注:メールライブラリを避けたいとおっしゃっていると思いますが、なぜですか?それは大いに役立ちます。これも純粋なルビーです。

于 2012-08-08T23:49:04.160 に答える