3v4l.org

run code in 300+ PHP versions simultaneously
<?php function getmsg($mbox,$mid) { global $charset,$htmlmsg,$plainmsg,$attachments; $htmlmsg = $plainmsg = $charset = ''; $attachments = array(); $h = imap_header($mbox,$mid); $s = imap_fetchstructure($mbox,$mid); if (!$s->parts) getpart($mbox,$mid,$s,0); else { foreach ($s->parts as $partno0=>$p) getpart($mbox,$mid,$p,$partno0+1); } echo $htmlmsg; } function getpart($mbox,$mid,$p,$partno) { global $htmlmsg,$plainmsg,$charset,$attachments; $data = ($partno)? imap_fetchbody($mbox,$mid,$partno): imap_body($mbox,$mid); if ($p->encoding==4) $data = quoted_printable_decode($data); elseif ($p->encoding==3) $data = base64_decode($data); $params = array(); if ($p->parameters) foreach ($p->parameters as $x) $params[strtolower($x->attribute)] = $x->value; if ($p->dparameters) foreach ($p->dparameters as $x) $params[strtolower($x->attribute)] = $x->value; if ($params['filename'] || $params['name']) { $filename = ($params['filename'])? $params['filename'] : $params['name']; $attachments[$filename] = $data; } if ($p->type==0 && $data) { if (strtolower($p->subtype)=='plain') $plainmsg.= trim($data) ."\n\n"; else $htmlmsg.= $data ."<br><br>"; $charset = $params['charset']; } elseif ($p->type==2 && $data) { $plainmsg.= $data."\n\n"; } if ($p->parts) { foreach ($p->parts as $partno0=>$p2) getpart($mbox,$mid,$p2,$partno.'.'.($partno0+1)); } }
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.17 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6

preferences:
227.27 ms | 405 KiB | 339 Q