#!/usr/bin/ruby require "rmail" msg=RMail::Parser.read(STDIN.read) class RMail::Message def every_part(&block) self.each_part{|prt| if prt.multipart? prt.every_part(&block) else block.call(prt) end} end end out=msg.header.to_s if msg.multipart? msg.every_part{|prt| out+=prt.header.to_s if type=prt.header.content_type case type when /text/i out+=prt.decode if not prt.header.to_s[/base64/i] when /image|octet/i end else out+=prt.body.to_s if not prt.header.to_s[/base64/i] end} else if not msg.to_s[/base64/i] out+=msg.decode if msg.decode end end print out