## when scanning over large mbox files.
while(line = f.gets)
case line
- when /^(From):\s+(.*)$/i,
- /^(To):\s+(.*)$/i,
- /^(Cc):\s+(.*)$/i,
- /^(Bcc):\s+(.*)$/i,
- /^(Subject):\s+(.*)$/i,
- /^(Date):\s+(.*)$/i,
- /^(Message-Id):\s+<(.*)>$/i,
- /^(References):\s+(.*)$/i,
- /^(In-Reply-To):\s+(.*)$/i,
- /^(Reply-To):\s+(.*)$/i,
- /^(List-Post):\s+(.*)$/i,
- /^(Status):\s+(.*)$/i: header[last = $1] = $2
+ when /^(From):\s+(.*)\s*$/i,
+ /^(To):\s+(.*)\s*$/i,
+ /^(Cc):\s+(.*)\s*$/i,
+ /^(Bcc):\s+(.*)\s*$/i,
+ /^(Subject):\s+(.*)\s*$/i,
+ /^(Date):\s+(.*)\s*$/i,
+ /^(Message-Id):\s+<(.*)>\s*$/i,
+ /^(References):\s+(.*)\s*$/i,
+ /^(In-Reply-To):\s+(.*)\s*$/i,
+ /^(Reply-To):\s+(.*)\s*$/i,
+ /^(List-Post):\s+(.*)\s*$/i,
+ /^(Status):\s+(.*)\s*$/i: header[last = $1] = $2
## these next three can occur multiple times, and we want the
## first one
when /^(Delivered-To):\s+(.*)$/i,
/^(X-Original-To):\s+(.*)$/i,
- /^(Envelope-To):\s+(.*)$/i: header[last = $1.downcase] ||= $2
+ /^(Envelope-To):\s+(.*)$/i: header[last = $1] ||= $2
when /^$/: break
when /:/: last = nil