conv.rb
仕様
携帯電話からのメールをデータフォルダに入れる
データフォルダ中ではuuidにて一意に決定されるフォルダを作成し、content.txt image.jpg subject.txtに分離する
設置方法
.procmailrc に
*^Subject.*\[mx\].* |conv.rb
とし、Subject: に [mx]が包含されるもののみプログラムへ投入
ソース
はっきりいって汚い。
まあ、変換ブロックだけなのであとで気合が入ったら書き直そう
#着陸しまくったな・・・
#!/usr/bin/ruby -Ke require 'tmail' require 'base64' require 'nkf' kcode='-e' outcode='-s' programname='[mx]' id = `uuidgen` datadir = "./data/#{id}".chop `mkdir #{datadir}` mail=TMail::Mail.parse(STDIN.readlines.join) File.open("#{datadir}/subject.txt",'w'){|file|file.write(NKF.nkf(kcode,mail.subject.gsub(programname,'')))} filelist=["subject.txt"] if mail.multipart? then mail.parts.each do |m| case m.main_type when "text" filename="content.txt" when "image" filename="image.jpg" else filename="etc" end filelist.push(filename) file = File.open("#{datadir}/#{filename}", "w+") file.chmod(0644) if filename == "image.jpg" file.write(Base64.decode64(m.body)) else file.write(NKF.nkf(kcode,m.body)) end file.close() end else #添付ファイルなし filelist.push("content.txt") File.open("#{datadir}/content.txt", "w+"){|file| file.chmod(0644) file.write(NKF.nkf(kcode,mail.body)) } end File.open("#{datadir}/index.html","w"){|file| file.write("<html><head></head><body>\n") filelist.each{|i| if i!="image.jpg" File.open("#{datadir}/#{i}"){|j| file.write(i.gsub("\.txt",":<br>\n")+NKF.nkf(outcode,j.read.gsub("\n","<br>\n"))+"<br>\n") } else file.write("image:<br>\n<img src=\"#{i}\">\n") end }