class RMail::Parser

The RMail::Parser class creates RMail::Message objects from Ruby IO objects or strings.

To parse from a string:

message = RMail::Parser.read(the_string)

To parse from an IO object:

message = File.open('my-message') { |f|
  RMail::Parser.read(f)
}

You can also parse from STDIN, etc.

message = RMail::Parser.read(STDIN)

In all cases, the parser consumes all input.

Attributes

chunk_size[RW]

Change the chunk size used to read the message. This is useful mostly for testing.

Public Class Methods

new() click to toggle source

Creates a new parser. Messages of message_class will be created by the parser. By default, the parser will create RMail::Message objects.

# File lib/rmail/parser.rb, line 322
def initialize()
  @chunk_size = nil
end
read(input) click to toggle source

Parse a message from the IO object io and return a new message. The io object can also be a string. This is just shorthand for:

RMail::Parser.new.parse(io)
# File lib/rmail/parser.rb, line 345
def Parser.read(input)
  Parser.new.parse(input)
end

Public Instance Methods

parse(input) click to toggle source

Parse a message from the IO object io and return a new message. The io object can also be a string.

# File lib/rmail/parser.rb, line 328
def parse(input)
  handler = RMail::Parser::Handler.new
  parser = RMail::StreamParser.new(input, handler)
  parser.chunk_size = @chunk_size if @chunk_size
  parser.parse
  return handler.message
end