Class Mail
In: mailread.rb
Parent: Object

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

Methods

[]   body   header   new  

Public Class methods

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.

[Source]

# 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

Return the header corresponding to field.

Matching is case-insensitive.

[Source]

# File mailread.rb, line 59
  def [](field)
    @header[field.capitalize]
  end

Return the message body as an Array of lines

[Source]

# File mailread.rb, line 52
  def body
    return @body
  end

Return the headers as a Hash.

[Source]

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

[Validate]

ruby-doc.org is a community service provided by James Britt and Happy Camper Studios, a Phoenix, Arizona, Ruby application development company.

Documentation content on ruby-doc.org is provided by remarkable members of the Ruby community.

For more information on the Ruby programming language, visit ruby-lang.org.

Want to help improve Ruby's API docs? See Ruby Documentation Guidelines.