名付けて mailread_ar.rb かな?

Ruby には mailread.rb というライブラリが標準で添付されている。これはヘッダをハッシュに、本文を配列に収めてくれるもので、凝ったメールを扱わなければ結構便利。

しかし複数ある、例えば Received ヘッダが一つのハッシュのうえで上書きされまくって最後の(Received の時系列で言うと最初の)ものしか残らないので、ちょっと不便。

そこですべてのヘッダ情報を配列を値に持つハッシュに収めることにした。

16c16,19
<         @header[attr] = $2
---
>           if ( !@header.has_key?( attr ) )
>               @header[attr] = Array.new()
>           end
>           @header[attr].push( $2 )
19c22,24
<         @header[attr] += "\n" + line
---
>           last = @header[attr].last
>           last += "\n" + line
>           @header[attr][@header[attr].size-1] = last

値を取り出すときは全部配列になっちゃってるから一手間増えるけど、まぁそれは仕方ないってことで。

※ これが PHP の場合は配列を扱う一手間がばかにならないから、もうちょっとなんか工夫しなきゃって気になるんだけど、Ruby なら楽だから。

More