Changeset 94427 in spip-zone


Ignore:
Timestamp:
Jan 4, 2016, 2:22:07 PM (5 years ago)
Author:
gouz@…
Message:

prise en compte de 3 $GLOBALS de configuration (imap_feedback_username, imap_feedback_password, imap_feedback_hostname) pour le genie imap_feedback.php

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailshot/trunk/genie/imap_feedback.php

    r86421 r94427  
    1010
    1111function genie_imap_feedback_dist($t){
    12         include_spip('inc/mailshot');
    13         include_spip('inc/config');
    14        
    15         $username = "@gmail.com";
    16         $password = "";
    17         $hostname = "{imap.gmail.com:993/imap/ssl}INBOX";       
     12        if ( isset($GLOBALS["imap_feedback_username"]) ){
     13            include_spip('inc/mailshot');
     14            include_spip('inc/config');
     15            $username = $GLOBALS["imap_feedback_username"];
     16            $password = $GLOBALS["imap_feedback_password"];
     17            $hostname = $GLOBALS["imap_feedback_hostname"];       
    1818
    19         $return_path_email = lire_config("facteur_smtp_sender");
    20         $feedback = charger_fonction("feedback","newsletter");
    21        
    22         $inbox = imap_open($hostname, $username, $password);
    23         if ($inbox){
    24                 spip_log("Récupération des bounce sur $username pour $return_path_email", _LOG_INFO_IMPORTANTE);
    25                 $emails = imap_search($inbox,'UNSEEN TO "'.$return_path_email.'"');
    26                
    27                 // toutes les campagnes envoyees depuis moins de 10jours (au dela on poll plus les stats)
    28                 $campagnes = sql_allfetsel("*","spip_mailshots", sql_in('statut',array('processing','end')) . " AND date_start>".sql_quote(date('Y-m-d H:i:s',strtotime("-10 day"))),'','date_start','0,10');
    29                 foreach($campagnes as $campagne){
    30                        
    31                         // recuperer l'id campagne
    32                         $tracking_id = "mailshot".$campagne['id_mailshot'];
    33                        
    34                         // traiter les emails
    35                         if ($emails){
    36                                 foreach($emails as $email_number) {   
    37                                         $message_lines = explode("\n", imap_fetchbody($inbox,$email_number,2));
    38                                         $return_status_code = $original_recipient = "";
    39                                         if (is_array($message_lines) && count($message_lines)) {
    40                                             foreach($message_lines as $l) {
    41                                                 $l = trim($l);
    42                                                 if ( preg_match("/^Status:/i", $l) ){
    43                                                     $tmp = explode(":",$l);
    44                                                     $return_status_code = trim(str_replace('.', '', $tmp[1]));
    45                                                     continue;
    46                                                 }
    47                                                 else if ( preg_match("/^Original-Recipient: rfc822;/i", $l) ){
    48                                                     $tmp = explode(";",$l);
    49                                                     $original_recipient = trim($tmp[1]);
    50                                                     continue;
     19            $return_path_email = lire_config("facteur_smtp_sender");
     20            $feedback = charger_fonction("feedback","newsletter");
     21           
     22            $inbox = imap_open($hostname, $username, $password);
     23            if ($inbox){
     24                    spip_log("Récupération des bounce sur $username pour $return_path_email", _LOG_INFO_IMPORTANTE);
     25                    $emails = imap_search($inbox,'UNSEEN TO "'.$return_path_email.'"');
     26                   
     27                    // toutes les campagnes envoyees depuis moins de 10jours (au dela on poll plus les stats)
     28                    $campagnes = sql_allfetsel("*","spip_mailshots", sql_in('statut',array('processing','end')) . " AND date_start>".sql_quote(date('Y-m-d H:i:s',strtotime("-10 day"))),'','date_start','0,10');
     29                    foreach($campagnes as $campagne){
     30                           
     31                            // recuperer l'id campagne
     32                            $tracking_id = "mailshot".$campagne['id_mailshot'];
     33                           
     34                            // traiter les emails
     35                            if ($emails){
     36                                    foreach($emails as $email_number) {   
     37                                            $message_lines = explode("\n", imap_fetchbody($inbox,$email_number,2));
     38                                            $return_status_code = $original_recipient = "";
     39                                            if (is_array($message_lines) && count($message_lines)) {
     40                                                foreach($message_lines as $l) {
     41                                                    $l = trim($l);
     42                                                    if ( preg_match("/^Status:/i", $l) ){
     43                                                        $tmp = explode(":",$l);
     44                                                        $return_status_code = trim(str_replace('.', '', $tmp[1]));
     45                                                        continue;
     46                                                    }
     47                                                    else if ( preg_match("/^Original-Recipient: rfc822;/i", $l) ){
     48                                                        $tmp = explode(";",$l);
     49                                                        $original_recipient = trim($tmp[1]);
     50                                                        continue;
     51                                                    }
    5152                                                }
    5253                                            }
    53                                         }
    54                                         if ($row = sql_fetsel("*","spip_mailshots_destinataires","id_mailshot=".intval($campagne['id_mailshot'])." AND email=".sql_quote($original_recipient))){
    55                                                 $event = "";
    56                                                 if ($return_status_code[0] == 4 AND $row['statut']!=='fail'){
    57                                                         $event = 'reject';
    58                                                 }
    59                                                 else if ($return_status_code[0] == 5 AND $row['statut']!=='fail'){
    60                                                         $event = 'hard_bounce';
    61                                                 }
    62                                                 if ($event) {
    63                                                         $feedback($event,$original_recipient,$tracking_id);
    64                                                 }
    65                                         }
    66                                 }
    67                         }
    68                 }
    69                 imap_close($inbox);
    70         } else {
    71             spip_log("Impossible de se connecter au serveur : ".imap_last_error(), _LOG_INFO_IMPORTANTE);
     54                                            if ($row = sql_fetsel("*","spip_mailshots_destinataires","id_mailshot=".intval($campagne['id_mailshot'])." AND email=".sql_quote($original_recipient))){
     55                                                    $event = "";
     56                                                    if ($return_status_code[0] == 4 AND $row['statut']!=='fail'){
     57                                                            $event = 'reject';
     58                                                    }
     59                                                    else if ($return_status_code[0] == 5 AND $row['statut']!=='fail'){
     60                                                            $event = 'hard_bounce';
     61                                                    }
     62                                                    if ($event) {
     63                                                            $feedback($event,$original_recipient,$tracking_id);
     64                                                    }
     65                                            }
     66                                    }
     67                            }
     68                    }
     69                    imap_close($inbox);
     70            } else {
     71                spip_log("Impossible de se connecter au serveur : ".imap_last_error(), _LOG_INFO_IMPORTANTE);
     72            }
    7273        }
    7374        return 0;
Note: See TracChangeset for help on using the changeset viewer.