][] //if attachment- subarray is [filename][binary data] //if text- subarray is [type of text(HTML/PLAIN)][text string] //i.e. //$partsarray[3.1][attachment][filename]=filename of attachment in part 3.1 //$partsarray[3.1][attachment][binary]=binary data of attachment in part 3.1 //$partsarray[2][text][type]=type of text in part 2 //$partsarray[2][text][string]=decoded text string in part 2 //$partsarray[not multipart][text][string]=decoded text string in message that isn't multipart function parsepart($p,$i){ global $link,$msgid,$partsarray; //where to write file attachments to: $filestore = '[full/path/to/attachment/store/(chmod777)]'; //fetch part $part=imap_fetchbody($link,$msgid,$i); //if type is not text if ($p->type!=0){ //DECODE PART //decode if base64 if ($p->encoding==3)$part=base64_decode($part); //decode if quoted printable if ($p->encoding==4)$part=quoted_printable_decode($part); //no need to decode binary or 8bit! //get filename of attachment if present $filename=''; // if there are any dparameters present in this part if (count($p->dparameters)>0){ foreach ($p->dparameters as $dparam){ if ((strtoupper($dparam->attribute)=='NAME') ||(strtoupper($dparam->attribute)=='FILENAME')) $filename=$dparam->value; } } //if no filename found if ($filename==''){ // if there are any parameters present in this part if (count($p->parameters)>0){ foreach ($p->parameters as $param){ if ((strtoupper($param->attribute)=='NAME') ||(strtoupper($param->attribute)=='FILENAME')) $filename=$param->value; } } } //write to disk and set partsarray variable if ($filename!=''){ $partsarray[$i][attachment] = array('filename'=>$filename,'binary'=>$part); $fp=fopen($filestore.$filename,"w+"); fwrite($fp,$part); fclose($fp); } //end if type!=0 } //if part is text else if($p->type==0){ //decode text //if QUOTED-PRINTABLE if ($p->encoding==4) $part=quoted_printable_decode($part); //if base 64 if ($p->encoding==3) $part=base64_decode($part); //OPTIONAL PROCESSING e.g. nl2br for plain text //if plain text if (strtoupper($p->subtype)=='PLAIN')1; //if HTML else if (strtoupper($p->subtype)=='HTML')1; $partsarray[$i][text] = array('type'=>$p->subtype,'string'=>$part); } //if subparts... recurse into function and parse them too! if (count($p->parts)>0){ foreach ($p->parts as $pno=>$parr){ parsepart($parr,($i.'.'.($pno+1))); } } return; } //require('./constantes.php'); $imap_server='{imap.online.net}'; $imap_account='buzuk@lenaour.org';//'scores-decisions.com'; $imap_password='bzh4231*';//catsysyo92'; if (!$mbox = imap_open($imap_server, $imap_account, $imap_password)) die("Connexion IMAP impossible : ". imap_last_error()); $list = imap_list($mbox, $imap_server, "*"); if(is_array($list)) { reset($list); foreach ($list as $val) { echo imap_utf7_decode($val) . "
\n"; } } else { echo "imap_list a échoué : " . imap_last_error() . "\n"; } echo "

Entetes de mail dans INBOX

\n"; $headers = imap_headers ($mbox); if ($headers == false) { echo "Erreur !\n"; } else { while (list ($key,$val) = each ($headers)) { echo $val."
\n"; } } $check = imap_mailboxmsginfo($mbox); if($check) { echo "Date: " . $check->Date ."
\n" ; echo "Pilote: " . $check->Driver ."
\n" ; echo "Mailbox: " . $check->Mailbox ."
\n" ; echo "Messages: ". $check->Nmsgs ."
\n" ; echo "Récent: " . $check->Recent ."
\n" ; echo "Non lus: " . $check->Unread ."
\n" ; echo "Effacés: " . $check->Deleted ."
\n" ; echo "Taille: " . $check->Size ."
\n" ; } else { echo "imap_check() a échoué: ".imap_last_error(). "
\n"; } $imap_obj = imap_check($mbox); $imap_sorted = imap_sort($mbox, SORTARRIVAL, 0); $MN=$imap_obj->Nmsgs; echo '
Nombre de messages '.$MN.'
'; $overview = imap_fetch_overview($mbox,"1:$MN",0); $k=0; $partsarray=array(); while( list($key,$val) = each($overview)) { if (strpos($val->from, 'rapports@neoveille.fr')!==false) { $unsorted[$k]=$val;//->uid; /*$unsorted[$k]["subject"]=imap_utf8($val->subject); // Le sujet du message $unsorted[$k]['from']=$val->from; $unsorted[$k]['to']=$val->to; $unsorted[$k]['date']=$val->date;// Date d'expédition $unsorted[$k]['message_id - Identification du message references - est une référence sur l'id de ce message in_reply_to - est une réponse à cet identifiant de message size - taille en octets uid - UID du message dans la boîte aux lettres msgno - numéro de séquence du message dans la boîte recent - Ce message est récent flagged - Ce message est marqué answered - Ce message a donné lieu à une réponse deleted - Ce message est marqué pour l'effacement seen - Ce message est déjà lu draft - Ce message est un brouillon */ $s=imap_fetchstructure($mbox,$val->message_id); /*if (count($s->parts)>0){ foreach ($s->parts as $partno=>$partarr){ //parse parts of email parsepart($partarr,$partno+1); } } else { //for not multipart messages //get body of message //decode if quoted-printable if ($s->encoding==4) $text=quoted_printable_decode($text); //OPTIONAL PROCESSING if (strtoupper($s->subtype)=='PLAIN') $text=$text; if (strtoupper($s->subtype)=='HTML') $text=$text; $partsarray['not multipart'][text]=array('type'=>$s->subtype,'string'=>$text); }*/ $full_bodacc=imap_body($mbox,$val->msgno).'[FIN]'; $k++; } } //usort ($unsorted, create_function('$a,$b','setlocale(LC_ALL,$locale);return strcoll($a["subject"],$b["subject"]);')); $Bodacc=explode("-------------------------------------------------- \r\n--------------------------------------------------", $full_bodacc); echo '
';
/*var_dump($imap_obj);
print_r($imap_obj);
print_r($imap_sorted);
print_r($unsorted);
print_r($partsarray);*/
print_r($Bodacc);
echo '
'; imap_close($mbox); ?>