2008年2月26日火曜日

Rubyで受信メールを解析する

ライブラリTMailを使う。
標準では入っていないのでインストールする。

gem install tmail

実験用プログラム
$KCODE = 'sjis'

require "tmail"
require "base64"

arg = ARGV[0]
path = arg[4, arg.size]

mail = TMail::Mail.load(path)

log = open("/tmp/receiveVideo/test.log", "w")

log.puts "From:" + mail.from.to_s
log.puts "To :" + mail.to.to_s
log.puts "Subject:" + mail.subject

def parse(part, log)
 if part.multipart?
  part.parts.each do |p|
   parse(p, log)
  end
 else
  if part.content_type == "text/plain"
   log.puts "Body:" + part.body
  else
   attach = open(part.main_type + "_" + part.encoding + "." + part.sub_type, "w")
   if part.main_type == "text"
    attach.write(part.body)
   else
    attach.write(Base64.decode64(part.body))
   end
   attach.close
  end
 end
end

parse(mail, log)

log.close

添付の動画のデコードがうまくできない。なぜ?


参考:
 メールで送った画像をサーバに保存させる
 TMail の使い方
 class TMail::Mail (リファレンス。古いバージョン?)
 RubyでBase64 - 今日覚えたこと (Base64について)
 packテンプレート文字列 (データのpackについて)

0 件のコメント:

ブログ アーカイブ

tags