summaryrefslogtreecommitdiff
path: root/lib/mailread.rb
blob: d9feffbb7a0ee2c13e3eca01d80f8b61c49f34e4 (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 Mail.new(f)
    unless f.kind_of?(IO)
      f = open(f, "r")
      me = super(f)
      f.close
    else
      me = super
    end
    return me
  end

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

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

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

  def header
    return @header
  end

  def body
    return @body
  end

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