summaryrefslogtreecommitdiff
path: root/lib/mailread.rb
blob: 8ec951e75413ee1da0b19a2180c7457c11ddfad9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Mail

  def initialize(f)
    unless f.kind_of?(IO)
      f = open(f, "r")
      opened = true
    end

    @header = {}
    @body = []
    begin
      while f.gets()
	$_.chop!
	next if /^From /	# skip From-line
	break if /^$/		# end of header

	if /^(\S+):\s*(.*)/
	  (attr = $1).capitalize!
	  @header[attr] = $2
	elsif attr
	  sub!(/^\s*/, '')
	  @header[attr] += "\n" + $_
	end
      end
  
      return unless $_

      while f.gets()
	break if /^From /
	@body.push($_)
      end
    ensure
      f.close if opened
    end
  end

  def header
    return @header
  end

  def body
    return @body
  end

  def [](field)
    @header[field]
  end
end