nb_mails ; $next_day = $infos->next_day ; $reste = $infos->reste ; $quarantaine = $infos->quarantaine ; $admins = $infos->admins ; $ret=" false" ; //================= réécriture de l'entête =============================== if (!isset( $mailto)){ echo 'erreur maito absent'; exit(); } if (empty( $mailto)) { // //$mailto=""; if ($conf_free[0]=='on') { $mailto=$conf_mail['email_webmaster']; } if ($conf_free[1]=='on') { if (!empty($args['Cc'])) { $headers= corrige_headers('Cc:',$headers); } if (!empty($args['Bcc'])) { $headers = corrige_headers('Bcc',$headers); } } } if ($conf_free[2]=='on') { $texte = "This is a multi-part message in MIME format.\n"; $texte .= "-----=".$conf_mail['boundary_key']."\n"; $texte .= "Ceci est un message est au format MIME.\n"; $texte .= 'Content-Type: text/plain; charset="UTF-8"'."\n"; $texte .= 'Content-Transfer-Encoding: 8bit'."\n\n"; $texte .= $args['content']; // A voir texte brut... $texte .= "\n\n"; $content =$texte .$content ; } $ret=false; if ( $reste <=0 ) { ob_start(); $ret = mail($mailto, $subject, $content, $headers); $message = ob_get_contents()."\n"; //ob_flush(); ob_end_clean(); //Trop de spam $pos = strpos(strtolower($message), 'spam'); $query = ' UPDATE '.FREE_MAIL_TABLE.' SET message="'. $message.'. " ;'; pwg_query($query); if ($pos === false) { if ($nb_mails==0) { $date_mail=time(); $query = ' UPDATE '.FREE_MAIL_TABLE.' SET date_mail="'. $date_mail.'" ;'; pwg_query($query); } $next_day = time() + (0); //20 secondes $query = ' UPDATE '.FREE_MAIL_TABLE.' SET date_quarantaine="'. $next_day .'" ;'; pwg_query($query); $nb_mails += 1; $query = ' UPDATE '.FREE_MAIL_TABLE.' SET nb_mails="'. $nb_mails.'" ;'; pwg_query($query); if ($ret) { return $ret; } echo '
'; echo ' ---- La fonction mail à retournée [false] ------ '; echo 'mailto: '.$mailto.' '; echo 'conf_free[0]='.$conf_free[0].' Envoie du mail vers le webmaster par le header(To) ; essayer de passer la variable à "on" si "off" '; echo 'conf_free[1]='.$conf_free[1].' Modifie le format des headers (Bcc,Cc) ; essayer de passer la variable à "on" si "off" '; echo 'conf_free[2]='.$conf_free[2].' Envoie une partie texte dans le header(spam) ; essayer de passer la variable à "on" si "off" '; echo "pour modifier la variable 'conf_free' modifier le fichier include/config_local.inc.php. En ajoutant la variable: conf['free_mail_173'] = off,on,on ; "; echo ' -------- MESSAGE ----------------- '; print_r($message) ; echo ' --------HEADERS ----------------- '; print_r($headers) ; echo ' --------CONTENT ----------------- '; print_r($content) ; echo '' ; exit(); } else { echo $message; $ret=false; } //================================================================== if ($ret) { return $ret; }else{ $next_day = time() + (2 * 24 * 60 * 60); echo "Attention defaut d'envoie de mails " .$ret. "\n" ; $query = ' UPDATE '.FREE_MAIL_TABLE.' SET date_quarantaine="'. $next_day.'" ;'; pwg_query($query); $reste=($next_day-time()) /3600 ; exit(); } }else{ /* echo '
'; print_r ($headers); print_r($content ); echo ''; */ if ($reste >= 1) { echo '
'; print "Attention il ya eu un défaut d'envoie de mails encore ". (int ) $reste . "H avant le déblocage." ; } else{echo '' ; } } //================================================================================= function Get_colonne_de($table) { $columns_of = array(); $query = 'DESC '.$table.';'; $result = mysql_query($query); $columns_of[$table] = array(); while ($row = mysql_fetch_row($result)) { array_push($columns_of[$table], $row[0]); } return $columns_of; } function Get_données() { global $conf, $user; $nb = Get_colonne_de(FREE_MAIL_TABLE); $table=$nb[FREE_MAIL_TABLE]; //================================================================================ if (!in_array( "nb_mails",$table)) { $query = "ALTER TABLE `".FREE_MAIL_TABLE."` ADD `nb_mails` INT NOT NULL default '0' "; pwg_query($query); } if (!in_array( "date_mail",$table)) { $query = "ALTER TABLE `".FREE_MAIL_TABLE."` ADD `date_mail` INT NOT NULL default '0' "; pwg_query($query); } if (!in_array( "quarantaine",$table)) { $query = "ALTER TABLE `".FREE_MAIL_TABLE."` ADD `quarantaine` bool NOT NULL "; pwg_query($query); } if (!in_array( "message",$table)) { $query = "ALTER TABLE `".FREE_MAIL_TABLE."` ADD `message` TEXT "; pwg_query($query); } $query = " SELECT COUNT(*) FROM ".FREE_MAIL_TABLE." ;"; //============================================================================== list($count) = mysql_fetch_row(pwg_query($query)); if ($count == 0) { $next_day = time() ; $date_quarantaine=''; $q = ' INSERT INTO '.FREE_MAIL_TABLE.' (id,nb_mails, date_quarantaine,date_mail, quarantaine,message) VALUES (1,0,"'. $next_day.'","'. $next_day.'" ,false,".") ;'; pwg_query($q); } $query = " SELECT * FROM ".FREE_MAIL_TABLE." ;"; $data = mysql_fetch_array(pwg_query($query)); // limite 2000 par semaine. $infos->nb_mails = $data['nb_mails']; $infos->next_day = $data['date_quarantaine']; $infos->reste =(float) ( $data['date_quarantaine'] - time())/3600 ; $infos->quarantaine = $data['quarantaine']; $infos->message = $data['message']; //============================================================ $admins = array(); $query = ' select U.'.$conf['user_fields']['username'].' as username, U.'.$conf['user_fields']['email'].' as mail_address from '.USERS_TABLE.' as U, '.USER_INFOS_TABLE.' as I where I.user_id = U.'.$conf['user_fields']['id'].' and I.status in (\'webmaster\', \'admin\') and I.adviser = \'false\' and '.$conf['user_fields']['email'].' is not null and I.user_id <> '.$user['id'].' order by username '; $datas = pwg_query($query); if (!empty($datas)) { while ($admin = mysql_fetch_array($datas)) { if (!empty($admin['mail_address'])) { // array_push($admins, format_email($admin['username'], $admin['mail_address'])); $temp= $admin['mail_address'] ; array_push($admins,$temp); } } } if (count($admins) > 0) { } $infos->admins = $admins ; return $infos; //======================================================================== echo ''; print "Il faut attendre au minimun 20 sec avent un deuxième envoie encore avant le déblocage." ; } echo ''; echo ' RETOUR '; echo "Dernier message :".$message. " reçu."; exit(); echo 'ARGS: '; print_r($args) ; echo ' ---------------------------------------------------- MAIL TO: ' ; print_r($mailto) ; echo ' ---------------------------------------------------- HEADER ' ; print_r($headers) ; echo ' ---------------------------------------------------- content ' ; print_r($content) ; echo '
'; echo FREE_MAIL_TABLE; echo ' ----------- ADMINS ---------------------------------------- '; print_r ($admins); echo ' ------------------------------------------------------------------- '; print_r ($infos); echo ''; } function corrige_headers($Carbonne,$headers) { global $conf_statistics,$conf_mail; $mailto=""; /* if ($conf_free_mail[1] == 'on') { $mailto=$conf_mail['email_webmaster']; } */ $splitter="|".$Carbonne.":(.*)\n|U"; preg_match_all($splitter,$headers, $out,PREG_PATTERN_ORDER); $val=array(); $match=array("<",">"); $string=array("","") ; foreach($out as $messages) { $val[]= $messages[0] ; } $val[1]= str_replace( $match,$string,$val[0] ) ; $src=$val[0]; $splitter="|\"(.*)\"|U"; preg_match_all($splitter,$val[1], $out,PREG_PATTERN_ORDER); $string=array(); $string = array_fill( 0, count($out), ''); $dest = str_replace($out[0], $string, $val[1]) ; /* if ($conf_free_mail[1] == 'on') $dest=str_replace($mailto.',', '', $dest) ; $dest=str_replace($mailto, '', $dest) ; } */ $headers = str_replace( $src,$dest, $headers) ; return $headers; //============================================================================================================== } ?>