In Files

  • mailread.rb

Parent

Class/Module Index [+]

Quicksearch

Mail

The Mail class represents an internet mail message (as per RFC822, RFC2822) with headers and a body.

Public Class Methods

new(f) click to toggle source

Create a new Mail where f is either a stream which responds to gets(), or a path to a file. If f is a path it will be opened.

The whole message is read so it can be made available through the header, #[] and body methods.

The “From ” line is ignored if the mail is in mbox format.

 
               # File mailread.rb, line 12
def initialize(f)
  unless defined? f.gets
    f = open(f, "r")
    opened = true
  end

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

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

    return unless line

    while line = f.gets()
      break if /^From /=~line
      @body.push(line)
    end
  ensure
    f.close if opened
  end
end
            

Public Instance Methods

[](field) click to toggle source

Return the header corresponding to field.

Matching is case-insensitive.

 
               # File mailread.rb, line 59
def [](field)
  @header[field.capitalize]
end
            
body() click to toggle source

Return the message body as an Array of lines

 
               # File mailread.rb, line 52
def body
  return @body
end
            
header() click to toggle source

Return the headers as a Hash.

 
               # File mailread.rb, line 47
def header
  return @header
end