The Mail class represents an internet mail message (as per RFC822, RFC2822) with headers and a body.
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
Return the header corresponding to field
.
Matching is case-insensitive.
# File mailread.rb, line 59 def [](field) @header[field.capitalize] end