Per visualizzare il testo di ogni e-mail pervenuta nel nostro server di posta, creeremo un file in grado di leggere un determinato messaggio il cui 'Id' gli verrà comunicato tramite il metodo GET.
Inoltre, il file per la lettura delle email sarà in grado di rilevare la presenza di allegati e in caso di esito positivo, di creare un link per il download di questi ultimi:
<?php if (isset($_GET['id'])) { $var = $_GET['id']; } @include 'cnf.php'; $fetchstructure = @imap_fetchstructure($conn, $var); $v1 = "0"; $i = ""; $ctrl = 0; $ed = 0; $mail_or_link = 0; foreach($fetchstructure as $k => $val) { if (($ctrl=="") && ($k=="subtype")) { if ($val=="RELATED") { $i = ".2"; $ctrl=1; } if ($val=="MIXED") { $i = ".2"; $ctrl=1; $ed=1; echo "<b>Allegati:</b> "; } } if ($k=="parts") { $items = $fetchstructure -> parts; foreach($items as $k0 => $val0) { $v1 = $v1+1; foreach($val0 as $k1 => $val1) { if (($k1=="disposition") && ($val1=="ATTACHMENT")) { $atch = $fetchstructure -> parts[$v1-1] -> dparameters[0] -> value; echo "<a href=\"attach.php?id=$var&item=".$v1."\">".$atch."</a>"; } } } } } if ($v1=="0") { $v1 = 1; $mail_or_link=1; } if ($ed) { $v1=1; echo "<br /><br />"; } $string=@imap_fetchbody($conn, $var, $v1.$i); $string=@quoted_printable_decode(@str_replace("=\r\n","",$string)); if ($mail_or_link=="") { echo $string; }else{ $word=""; $row = @explode("\n", $string); for ($inc=0;$inc<@sizeof($row);$inc++) { $row[$inc] = $row[$inc]."<br />"; $word=@array_merge($word,@explode(" ", $row[$inc])); } for ($k=0;$k<@sizeof($word);$k++) { $address = @strpos($word[$k], "www"); $url = @strpos($word[$k], "http"); $link = @strpos($word[$k], "href"); $ftp = @strpos($word[$k], "ftp"); if ($link == 0) { if (($url == 0) && ($address == 0)) { echo $word[$k]." "; }else{ echo "<a href=\"".@str_replace('<br />','',$word[$k])."\">"; echo $word[$k]."</a>"; } }else{ echo $word[$k]." "; } } } @imap_close($conn); ?>Il codice proposto è lungo ma di per sè non estremamente complicato: in pratica lo script controlla la struttura del messaggio relativo all''Id' comunicato dal metodo grazie all'azione della funzione imap_fetchstructure(); se è presente un allegato, questo viene linkato ad un file in modo che sia possibile scaricarlo, diversamente viene proposto essenzialmente il testo della e-mail.