source: extensions/Mail_supervisor/main.inc.php @ 4206

Last change on this file since 4206 was 4206, checked in by cljosse, 14 years ago

[mail_supervisor] update file help 2

File size: 8.3 KB
Line 
1<?php
2/*
3Plugin Name: Mail supervisor
4Version: 1.0
5Description: Mail supervisor surveille l'envoie des mails.
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315
7Author: cljosse
8Author URI:http://cljosse.free.fr
9*/
10if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
11if (!defined('MAIL_SUPERV_DIR')) define('MAIL_SUPERV_DIR' , basename(dirname(__FILE__)));
12if (!defined('MAIL_SUPERV_PATH')) define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
13include_once (MAIL_SUPERV_PATH.'include/constants.php'); 
14
15/* EVENT_HANDLER_PRIORITY_NEUTRAL  */
16
17
18add_event_handler('send_mail', 'clj_mail',EVENT_HANDLER_PRIORITY_NEUTRAL - 1 , 6);
19
20function clj_mail($result, $mailto, $subject, $content, $headers, $args)
21{
22    global $conf, $user, $lang_info,  $conf_mail,$mails_options,$mails_données , $template,$page ,$erreur_message,$infos_message, $lang; 
23        // lecture config table -------------
24 load_language('plugin.lang', MAIL_SUPERV_PATH);
25 
26        $mails_options = explode("," , $conf['mail_superv']);
27       
28        if ($mails_options[3]=='on')
29        {
30                if (kill_list())
31                 {
32                    $erreur_message .= l10n('is_a_spam') ;
33                        return true;
34                 }
35        }
36       
37        $message ="";
38        if (!isset($infos_message))
39        {
40        $infos_message = "";
41        }
42if (!isset($erreur_message))
43        {
44        $erreur_message = '';
45        }
46        // lecture données       -------------
47    $mails_données = Get_Datas();
48
49       
50        $nb_mails         =     $mails_données['nb_mails'] ;
51        $next_day  =  $mails_données['date_mail'] ;
52       
53        $reste =    $mails_données['reste'] ;
54       
55       
56        $rest_mail =    $mails_données['rest_mail'] ;
57        if ($rest_mail <=0 || $mails_données['nb_mails'] ==0 ){
58           $mails_données['nb_mails'] =0 ;
59           $mails_données['date_mail'] = time();
60        }
61       
62        $rest_spam =    $mails_données['rest_spam'] ;
63        if ($rest_spam <=0 || $mails_données['nb_spams'] ==0 ){
64           $mails_données['nb_spams'] =0 ;
65           $mails_données['date_spam'] = time();
66        }
67       
68        $alerte =   ( $mails_données['reste'] >0 ) ? true : false ; 
69       
70        $alerte_mail =    ( $mails_données['nb_mails'] >   $mails_données['nb_mails_maxi']-1 ) ? true : false ;
71        $alerte_spam =    (  $mails_données['nb_spams'] >   $mails_données['nb_spams_maxi']-1 ) ? true : false ;
72       
73 
74 if ( ( !$alerte  && !$alerte_spam  && !$alerte_mail ) ) 
75        {
76                 
77  $nb_destinataires=0;
78                if ($mails_options[0] == 'on') {
79                        if ($mailto == "" )     $mailto = $conf_mail['email_webmaster'];
80                }   
81 if ($mailto<>"" )            $nb_destinataires +=1; 
82
83                if (!empty($args['Bcc']))  { 
84                        $nb_destinataires += count($args['Bcc']); 
85                        } 
86                if (!empty($args['Cc']))  {   
87                        $nb_destinataires += count($args['Cc']); 
88                        }
89   //================= réécriture de l'entête ===============================
90if ( $nb_destinataires  == 1 )
91        {
92                if ($mailto == "" ) 
93                  {
94                          if (!empty($args['Cc']) and count($args['Cc']) > 0 )  $mailto  = get_strict_email_list(implode(',', $args['Cc'])) ;
95                          if (!empty($args['Bcc']) and count($args['Bcc']) > 0 ) $mailto  = get_strict_email_list(implode(',', $args['Bcc'])) ;
96                         
97                                $headers = preg_replace('/.*Bcc(.*).\n/i', '', $headers);
98                                $headers = preg_replace('/.*Cc(.*).\n/i', '', $headers);
99                               
100                  }
101        }else{
102   
103 
104     }
105
106//=============================================================================         
107if (!empty($args['Cc']))
108                        {
109                         $headers= corrige_header('Cc',$headers,$args);
110                        }
111                if (!empty($args['Bcc']))
112                        {   
113                                   $headers     = corrige_header('Bcc',$headers,$args); 
114                        }
115//=============================================================================                 
116if ($mails_options[2]=='on')   {
117
118        $texte = "This is a multi-part message in MIME format.\n"; 
119       
120        $texte .= "-----=".$conf_mail['boundary_key']."\n"; 
121        $texte .= "Ceci est un message est au format MIME.\n"; 
122        $texte .= 'Content-Type: text/plain; charset="UTF-8"'."\n"; 
123        $texte .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
124        $texte .= $mails_données['header_text']; // A voir texte brut...
125           
126                $texte .= "\n\n"; 
127       
128                $content =$texte .$content ;
129}
130 
131$ret=false;
132       
133            //======== Non mise en quarantaine =============
134                ob_start();
135                $ret = false;
136                 if ($nb_destinataires > 0) {
137                   $ret = mail($mailto, $subject, $content, $headers);
138
139                        }else{
140                           $message .= l10n('no_receiver_available');
141                        }
142                        $message .= ob_get_contents();
143            ob_end_clean();
144                        $mails_données['message']=$message;     
145                        Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto);
146               
147       
148       
149        } else {
150
151        //================== Est en quarantaine =======================
152                $erreur_message .=      l10n('To_day_is')."<br />";
153                        if ($alerte_spam ) { 
154                        $type="Spams";
155                               
156                                $d1=$mails_données['nb_spams'] . '  \\  ' . $mails_données['nb_spams_maxi'];
157                                $d2=$mails_données['nb_spams'];
158                                $d3= $mails_données['rest_spam'];
159                                $d4=time()+$d3 ;
160                        } 
161 
162                        if ($alerte_mail) {
163                        $type="Mails";
164                       
165                                $d1=$mails_données['nb_mails']. '  \\  ' . $mails_données['nb_mails_maxi'];;
166                                $d2=$mails_données['date_mail'];
167                                $d3= $mails_données['rest_mail'];
168                                $d4=time()+$d3 ;
169                               
170                               
171                        }
172                        if ($alerte) {
173                        $type="Spams(Quarantaine)";
174                                $d1=$mails_données['nb_spams'] . '  \\  ' . $mails_données['nb_spams_maxi'];
175                                $d2=$mails_données['date_quarantaine'];
176                                $d3= $mails_données['reste'];
177                                $d4=time()+$d3 ;
178                        } 
179
180
181$d2=date(l10n('formatdate'),$d2);
182$d3=int_to_heure($d3) ;
183$d4=date(l10n('formatdate'),$d4);
184
185        if ($alerte_mail) {
186              $erreur_message .='<br />'.sprintf(l10n('alerte_mail %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
187                }else{
188                           $erreur_message .='<br />'.sprintf(l10n('mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
189
190                }
191 $infos_message = l10n('mail_not_send');
192 
193 }                     
194 sauve_données();
195 return true ;
196}
197//===========================================================================================   
198function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto)
199{                       
200         global $conf, $user,  $conf_mail,$mails_options,$mails_données , $template,$page ,$infos_message,$erreur_message,$args,$lang, $lang_info; 
201
202         
203         
204    $match=array("<",">");
205    $string=array("&lt;","&gt;") ;       
206
207//Warning: mail() has been disabled for security reasons
208       
209        $est_un_spam =!(strpos(strtolower($message), 'spam') === false);
210        $headers=str_replace( $match,$string, $headers); 
211       
212        if ( ($ret==false) || ($est_un_spam==true) || ($nb_destinataires == 0) ) {
213                 ;                              // Bad recipient address syntax
214                $pos1 = strpos(strtolower($message), 'bad recipient address syntax');
215                if (  !($pos1 === false) ){
216                        $erreur_message .= l10n('detection_de').' : Bad recipient address syntax .';
217                        $erreur_message .= l10n('verifiez_les_destinataires').' (Bcc,Cc,To)<br />';
218                        }       
219       
220        $erreur_message .= sprintf(l10n('debug_message %s %s %s %s %s'),($ret==true)? "true" : "false",$message,$mailto,$headers,$nb_destinataires);
221       //=============== La fonction mail à retournéeune erreur =========================               
222
223                               
224                                }       
225                               
226        if ($est_un_spam == false) 
227                        {
228                        if ($mails_données['nb_mails']==0) {    $mails_données['date_mail'] =  time();  }       
229                        $mails_données['nb_mails'] += $nb_destinataires;
230                        }
231                        else
232                        {
233                                $mails_données['nb_spams'] += $nb_destinataires;                       
234                            //--- Détection de spam ------------------
235                                if ($mails_données['nb_spams']==0) {$mails_données['date_spam'] = time();       }
236
237                                $trop_de_spam =!(strpos(strtolower($message), 'trop de spam') === false);
238                                if ( $trop_de_spam ) {
239                                                $mails_données['nb_spams_maxi']=$mails_données['nb_spams'];
240
241                                                $mails_données['date_quarantaine']= time()  ;   
242                                                $mails_données['quarantaine']= true    ;       
243                                                $infos_message .=memo_var($mails_données);
244                                        }
245
246                        }
247 
248 
249
250 
251 $ret=true;
252 return $ret ;
253 
254}
255
256//==========================================================================================
257function admin_menu($menu)
258{
259    array_push($menu, array('NAME' => 'Mail_Superv',
260      'URL' => get_admin_plugin_menu_link(MAIL_SUPERV_PATH . 'admin/mail_superv_admin.php')));
261    return $menu;
262}
263
264function affiche_spam ()
265
266{
267include_once (MAIL_SUPERV_PATH.'include/fonctions.php'); 
268
269  affiche_message();
270}
271add_event_handler('get_admin_plugin_menu_links', 'admin_menu');
272add_event_handler('loc_after_page_header','affiche_spam' );
273
274?>
Note: See TracBrowser for help on using the repository browser.