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 を使った。