*1  multipart mail 添付の zip ファイルの中身の csv ファイルを読む ruby スクリプト

なんとなく用途は想像が付くのではなかろうかと思うが、ちょっと欲しくなって作った。こんな感じ。
require 'rmail'
require 'tempfile'
require 'zip/zip'

mail = RMail::Parser.read(STDIN.read)
if mail.multipart?
  mail.each_part do |part|
    if /\.zip$/ =~ part.header['Content-Disposition']
      tempfile = Tempfile.new('maildecoded')
      tempfile.write part.decode
      tempfile.close

      zipfile = Zip::ZipFile.new(tempfile.path)
      zipfile.each_with_index do |entry, index|
        if /\.csv$/ =~ entry.name
          csvdata = zipfile.get_input_stream(entry).read
          # do something with csvdata
        end
      end
    end
  end
end
ZipFile はどうも一度ファイルに吐き出さないと使えないっぽいので tempfile を使った。

( Permalink | Comments (0) | tags: ruby  )
Comments

Please write your comment. email address won't appear. Cannot use any HTML tags in comment.
コメントをお書き下さい。メールアドレスは公開されません。 またHTMLタグは利用できません。
Name   E-mail   URL
Comment

About W.W.Walker

World Wide Walker は yoosee による blog です。PDA, Web・サーバ技術, 美味しい食べ物などの話題を取り上げています... read more

このエントリーのブックマーク

Monthly Archives

Select Month to read