2011-01-20 16 views
2

私はgmailからメールを引き出し、Rubyでコンテンツを入手できるシステムを作成しようとしています。 (imapやpopを使って)
そして私が知っている限り、これを行うのに役立つかもしれない 'ruby-gmail'、 'mail'(tmailの新しいバージョン)と 'action mailer'があります。Ruby、MIMEマルチパートでメールを正しくデコードする方法は?

私は今のメール」と「ルビーのGmail」をしようとしている、と私はこのようなデコード機能を使用します。

gmail.inbox.emails[0].body.decoded 

をしかし、いくつかのメールが正しく復号することができますが、一部にはできませんでした。デコードされたメールの出力は次のようになります

This is MIME multipart 6. 
--__=_Part_Boundary_002_310696381.907173471 
Content-Type: text/plain; 
    charset="big5" 
Content-Transfer-Encoding: quoted-printable 

=AE=BC=A5=BF=A7A=A6n, 
.......(some encoded content) 

そして、いくつかの他のメールに、コンテンツ転送エンコーディングは、base64です。

メールを正しくデコードする方法はありますか?
またはメールを読んで、符号化された部分 を取得し、Base64.decode64を使用するか、メールをデコードするために「M」を展開する必要がありますか?

答えて

7

「Gmail」の宝石についてはわかりませんが、「メール」はかなりうまくいきます。

require 'mail' 
mail = Mail.new(mail_text) 
mail.parts[0].body.decoded 

ような何か動作するはずです(「n」の代わりに他の部分のための0を使用)

あなたはあなたの助けをmail.attachments[0].decoded

+0

おかげで必要があると思いますので、また、それが添付可能性があることに注意してください!私は出力が奇妙に見える理由を知った!元のメールは英語ではなく中国語になっているからです。私が必要とするのは、asciiとUnicodeデコーダですが、MIMEデコーダはありません。ご協力いただきありがとうございます! – lintingy

+0

'multipartメッセージで' mail.body.decode'を試してはいけません。なぜなら、それは動作しないからです。多分前にそれをテストしますか? –

関連する問題