to); $reply .= sprintf("SUBJECT: %s\r",$mo->subject); $reply .= str_replace("\r---","\r#--",$mo->msg)."\r"; $reply .= "+---------------------------------------------------------[ CONTROL LINES ]-+\r"; $reply .= sprintf("DATE: %s\r",$mo->date->format('Y-m-d H:i:s')); if ($mo->msgid) $reply .= sprintf("MSGID: %s\r",$mo->msgid); if ($mo->replyid) $reply .= sprintf("REPLY: %s\r",$mo->replyid); foreach ($mo->kludges as $k=>$v) $reply .= sprintf("%s %s\r",$k,$v); $reply .= "+------------------------------------------------------------------[ PATH ]-+\r"; if ($mo->path->count()) if ($mo instanceof Netmail) { // Incoming processed message havent converted the path into a collection of addresses yet foreach ($mo->path as $o) $reply .= sprintf("VIA: %s\r",(is_string($o) ? $o : $mo->via($o))); } elseif ($mo instanceof Echomail) { // Rejected echomails dont have a collection of Address::class for paths foreach ($mo->path as $o) $reply .= sprintf("PATH: %s\r",(is_string($o) ? $o : $o->ftn)); } else { throw new \Exception('Message object is not an Netmail or Echomail?'); } else $reply .= "No path information? This would be normal if this message came directly to the hub\r"; $reply .= "+----------------------------------------------------------------[ ORIGIN ]-+\r"; $reply .= sprintf("%s (%s)\r",($mo->getRelationValue('origin')?->value) ?: '*NO ORIGIN*',$mo->fftn->ftn4d); $reply .= "+-----------------------------------------------------------[ END MESSAGE ]-+\r"; return $reply; } }