obiettivo: visualizzare titolo data e testo di un messaggio
funzioni usate:
Codice PHP:
function retrieve_message($mbox, $messageid)
{
$message = array();
$header = imap_headerinfo($mbox, $messageid);
$structure = imap_fetchstructure($mbox, $messageid);
$message['subject'] = isset($header->subject) ? utf8_decode(imap_utf8($header->subject)) : null;
$message['from'] = isset($header->from) ? $header->from : null;
$message['senderaddress'] = isset($header->senderaddress) ? $header->senderaddress : null;
$message['to'] = isset($header->to) ? $header->to : null;
$message['cc'] = isset($header->cc) ? $header->cc : null;
$message['bcc'] = isset($header->bcc) ? $header->bcc : null;
$message['date'] = isset($header->date) ? $header->date : null;
if (check_type($structure))
{
$message['body'] = imap_fetchbody($mbox,$messageid,"1"); ## GET THE BODY OF MULTI-PART MESSAGE
if(!$message['body']) {$message['body'] = '[EMPTY]\n\n';}
}
else
{
$message['body'] = imap_body($mbox, $messageid,"1");
if(!$message['body']) {$message['body'] = '[EMPTY]\n\n';}
}
$message['body1'] = $message['body'];
$message['body'] = decode_ISO88591($message['body']);
$message['body'] = str_replace("=\r\n",'',$message['body']);
return $message;
}
function decode_ISO88591($string)
{
$string=str_replace("=?iso-8859-1?q?","",$string);
$string=str_replace("=?iso-8859-1?Q?","",$string);
$string=str_replace("?=","",$string);
$charHex=array("0","1","2","3","4","5","6","7",
"8","9","A","B","C","D","E","F");
for($z=0;$z<sizeof($charHex);$z++)
{
for($i=0;$i<sizeof($charHex);$i++)
{
$string=str_replace(("=".($charHex[$z].$charHex[$i])),
chr(hexdec($charHex[$z].$charHex[$i])),
$string);
}
}
return($string);
}
function check_type($structure) ## CHECK THE TYPE
{
if($structure->type == 1)
{
return(true); ## YES THIS IS A MULTI-PART MESSAGE
}
else
{
return(false); ## NO THIS IS NOT A MULTI-PART MESSAGE
}
}
per chi dovesse trovare questo thread con la ricerca quando funzionerà:
Codice PHP:
$mbox = imap_open('{localhost:143/novalidate-cert}INBOX', 'username@dominio.ch', 'password')
or die("can't connect: " . imap_last_error());
$quanti = imap_num_msg($mbox);
for ($a = 1; $a<=$quanti; $a++) {
$msg = retrieve_message($mbox,$a);
print_r($msg);
imap_delete($mbox, $a);
}
imap_close($mbox,CL_EXPUNGE);
riuscito: 95%
problema: se c'è un url con cose tipo id=123 fa casino
soluzione: la chiedo a voi