filepath, 'r')) { throw new RuntimeException('Failed to open mbox file: '.$this->filepath); } $buffer = ''; while (($line = fgets($handle)) !== false) { if (preg_match($delimiter, $line) && $buffer !== '') { yield new FileMessage($buffer); $buffer = ''; } $buffer .= $line; } if ($buffer !== '') { yield new FileMessage($buffer); } fclose($handle); } }