Page MenuHomePhorge

Make handling incoming mail a bit more robust/correct
Closed, ResolvedPublic


  1. PHP 8.2.17, Phorge at 713188bf1710fdd1328d58b394ea5ccba52dfb3c
  2. Have a local text file called email.txt with a valid mbox email message in it and place it in ./phorge/scripts/mail/
  3. In, replace the line $parser->setText(file_get_contents('php://stdin')); with $parser->setText(file_get_contents('email.txt'));
  4. Intentionally bug function parse() in$137 by adding the line $this->resource = mailparse_msg_create(); right after $this->parts = array(); - this basically emulates a buggy email with no message headers getting into Phorge.
  5. Run php ./mail_handler.php.

As a result, we end up with EXCEPTION: (RuntimeException) Undefined index: subject triggered in$58 (and seen in downstream for unknown reasons).

That is misleading as the code found no headers at all, not only a missing subject header:
$this->parts[1] includes the array headers which is empty due to bugging it, then getPartHeaders() at$311 is called which only runs isset but does not check for an empty array (but should).

Furthermore, per RFC 2822 §3.6, a subject header is optional anyway while the code expects it to always exist.