bbc355f57b
Modification des chemins complet Attention à tester
195 lines
6.6 KiB
PHP
195 lines
6.6 KiB
PHP
<?php
|
||
|
||
//script will fetch an email identified by $msgid, and parse the its parts into an
|
||
//array $partsarray
|
||
//structure of array:
|
||
//$partsarray[<name of part>][<attachment/text>]
|
||
//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) . "<br />\n";
|
||
}
|
||
} else {
|
||
echo "imap_list a <20>chou<6F> : " . imap_last_error() . "\n";
|
||
}
|
||
|
||
echo "<p><h1>Entetes de mail dans INBOX</h1>\n";
|
||
$headers = imap_headers ($mbox);
|
||
if ($headers == false) {
|
||
echo "Erreur !\n";
|
||
} else {
|
||
while (list ($key,$val) = each ($headers)) {
|
||
echo $val."<br>\n";
|
||
}
|
||
}
|
||
|
||
$check = imap_mailboxmsginfo($mbox);
|
||
if($check) {
|
||
echo "Date: " . $check->Date ."<br />\n" ;
|
||
echo "Pilote: " . $check->Driver ."<br />\n" ;
|
||
echo "Mailbox: " . $check->Mailbox ."<br />\n" ;
|
||
echo "Messages: ". $check->Nmsgs ."<br />\n" ;
|
||
echo "R<EFBFBD>cent: " . $check->Recent ."<br />\n" ;
|
||
echo "Non lus: " . $check->Unread ."<br />\n" ;
|
||
echo "Effac<EFBFBD>s: " . $check->Deleted ."<br />\n" ;
|
||
echo "Taille: " . $check->Size ."<br />\n" ;
|
||
} else {
|
||
echo "imap_check() a <20>chou<6F>: ".imap_last_error(). "<br />\n";
|
||
}
|
||
|
||
$imap_obj = imap_check($mbox);
|
||
$imap_sorted = imap_sort($mbox, SORTARRIVAL, 0);
|
||
|
||
$MN=$imap_obj->Nmsgs;
|
||
echo '<br>Nombre de messages '.$MN.'<br/>';
|
||
|
||
$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<78>dition
|
||
$unsorted[$k]['message_id - Identification du message
|
||
references - est une r<>f<EFBFBD>rence sur l'id de ce message
|
||
in_reply_to - est une r<>ponse <20> cet identifiant de message
|
||
size - taille en octets
|
||
uid - UID du message dans la bo<62>te aux lettres
|
||
msgno - num<75>ro de s<>quence du message dans la bo<62>te
|
||
recent - Ce message est r<>cent
|
||
flagged - Ce message est marqu<71>
|
||
answered - Ce message a donn<6E> lieu <20> une r<>ponse
|
||
deleted - Ce message est marqu<71> pour l'effacement
|
||
seen - Ce message est d<>j<EFBFBD> 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 '<pre>';
|
||
/*var_dump($imap_obj);
|
||
print_r($imap_obj);
|
||
print_r($imap_sorted);
|
||
print_r($unsorted);
|
||
print_r($partsarray);*/
|
||
print_r($Bodacc);
|
||
echo '</pre>';
|
||
|
||
|
||
imap_close($mbox);
|
||
?>
|