rubyにてメールヘッダを連想配列に加工する
pop3やimapをアクセスする場合にはメールヘッダの解析をライブラリがやってくれるんだがfetchmail,procmailにてメールを加工するときに適当なライブラリが存在していないし、そこら辺にも転がっていない。
ので作った。
open("mail.txt").read=~/\A(.*?)\n\n(.*)\Z/m head,body=$1,$2 head=head.split(/\n/).map{|i|i[0]+i}.join("\n")[1..-1].split(/\n[^\s]/).map{|i|i.split(/\n\s\s/).join("")} head=Hash[*head.map{|i|i=~/^(.*?):\s(.*)$/;[$1,$2]}.flatten]
これでOK、最後の行を消すと連想配列でなくヘッダをぶんりしたものになる。三行目の/\n\s\s/を/\n\s/にすると改行+空白を原文のままにする。
使い方。
p head["To"] p head["Subject"] ####デコードしたい場合 require 'nkf' p NKF.nkf("-w",head["Subject"])