22211


Railsの初心者です。  
現在製作しているアプリにメールの受信機能を実装したいです。  
Gem mailを用いてGmailの受信BOXのメールを取得してアプリケーション上で表示したいのですが、本文が文字化けしてしまいます。

・やりたいこと  
Ruby on railsのGem
mailを用いて、Gmailの受信BOXのメールを取得してアプリケーション上で表示したい。subject(題目)と同じように、body(本文)も文字化けしないように表示したい。

・参考にしたページ  
<https://github.com/mikel/mail#readme>  
<http://www.school.ctc-g.co.jp/columns/masuidrive/masuidrive07.html>

・ブラウザの表示  
subject(題目)の表示例  
本日渋谷にて開催！！

body(本文)の表示例

[code]

    -0-786876096-1455690672=:93410 Content-Type: text/plain; charset=iso-2022-jp $BK\J8!"I=<($5$l$^$9$+!)(B --0-786876096-1455690672=:93410 Content-Type: text/html; charset=iso-2022-jp <html><body><div style="color:; background-color:; font-family:MS PGothic, sans-serif;font-size:15pt"><div>$BK\J8!"I=<($5$l$^$9$+!)(B</div></div></body></html> --0-786876096-1455690672=:93410--
    
[/code]

コントローラのソースコード  
【hoge_controller.rb】

[code]

    class HogeController < ApplicationController
    
    def inbox
    
    require 'mail'
    
    Mail.defaults do 
      retriever_method :pop3, { 
        :address => "pop.gmail.com", 
        :port => 995, 
        :user_name => 'hoge@gmail.com', 
        :password => 'パスワード', 
        :enable_ssl => true 
      } 
    end
    
      @hoges = Mail.find(count: 5, order: :desc, what: :all)
    
    end
    
    end
    
[/code]

ビューのソースコード  
【inbox.html.erb】

[code]

    <% @hoges.each do |hoge| %>
    <%= hoge.subject.encode('UTF-8') %>  # 正常に表示される 
    <%= hoge.body.decoded.encode('UTF-8') %>  #**文字化けする**
    <% end %>
    
[/code]

・教えて頂きたいこと  
body(本文)を文字化けさせずに表示させるやり方

何卒宜しくお願い致します。


CC BY-SA 3.0
2016-02-17T07:21:45.130
22200
2016-02-17T11:33:09.117
2016-02-17T11:33:09.117
76
12323
question
ruby
Gem mail でマルチパートメールの本文が文字化けする


本文がマルチパートで構成されていますので、たとえば最初のパートを対象とするのであれば以下のようにします。

[code]

    hoge.parts.first.decoded
    
[/code]

**参考**

マルチパートであるか判定する:

[code]

    hoge.multipart?
    
[/code]

`text/plain` であるパートを取り出す (無い場合にはnil):

[code]

    hoge.parts.find { |part| part.content_type =~ /\Atext\/plain\b/i }
    
[/code]


CC BY-SA 3.0
2016-02-17T11:31:37.907
22211
2016-02-17T11:31:37.907
76
22200
answer