Changeset 96774 in spip-zone


Ignore:
Timestamp:
Apr 23, 2016, 12:57:34 PM (3 years ago)
Author:
cedric@…
Message:

Dans la configuration du facteur on indique l'email From fourni par SPIP
+ un reglage supplementaire permet de forcer le From quand il n'est pas dans le meme domaine que le From de Facteur
dans ce cas le From passe en ReplyTo? et le From configure est force. Permet aux mails des formulaire de contact de fonctionner meme avec un service smtp externe qui demande de valider les domaines sortant

Location:
_plugins_/facteur/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/facteur/trunk/classes/facteur.php

    r96773 r96774  
    3131
    3232class Facteur extends PHPMailer {
     33        /**
     34         * From force si From pas dans le bon domaine
     35         * @var string
     36         */
     37        public $ForceFrom = '';
     38
     39        /**
     40         * FromName force si From pas dans le bon domaine
     41         * @var string
     42         */
     43        public $ForceFromName = '';
    3344
    3445        /**
     
    4455                $defaut = array();
    4556                foreach (array(
    46                         'adresse_envoi', 'adresse_envoi_email', 'adresse_envoi_nom',
     57                        'adresse_envoi', 'adresse_envoi_email', 'adresse_envoi_nom', 'forcer_from',
    4758                        'cc', 'bcc',
    4859                        'smtp', 'smtp_host', 'smtp_port', 'smtp_auth',
     
    91102                                $this->FromName = strip_tags(extraire_multi($GLOBALS['meta']['nom_site']));
    92103                        }
     104                }
     105
     106                // si forcer_from, on sauvegarde le From et FromName par defaut, qui seront utilises
     107                // si From n'est pas dans le meme domaine
     108                // (utiliser le facteur avec un service externe qui necessite la validation des domaines d'envoi)
     109                if ($options['forcer_from']=='oui'){
     110                        $this->ForceFrom = $this->From;
     111                        $this->ForceFromName = $this->FromName;
    93112                }
    94113
     
    393412         */
    394413
     414        /**
     415         * Avant le Send() on force le From si besoin
     416         * @return bool
     417         * @throws phpmailerException
     418         */
    395419        public function Send() {
     420                if ($this->ForceFrom
     421                        AND $this->From!==$this->ForceFrom){
     422                        $forcedomain = explode('@',$this->ForceFrom);
     423                        $forcedomain = end($forcedomain);
     424                        $domain = explode('@',$this->From);
     425                        $domain = end($domain);
     426                        if ($domain!==$forcedomain){
     427                                // le From passe en ReplyTo
     428                                $this->AddReplyTo($this->From,$this->FromName);
     429                                // on force le From
     430                                $this->From = $this->ForceFrom;
     431                                $this->FromName = $this->ForceFromName;
     432                        }
     433                }
    396434                $args = func_get_args();
    397435                return $this->callWrapper(array('parent','Send'),$args);
  • _plugins_/facteur/trunk/formulaires/configurer_facteur.html

    r96772 r96774  
    1717                                                        <div class="choix">
    1818                                                                <input type="radio" name="facteur_adresse_envoi" class="radio" value="non" id="facteur_adresse_envoi_non"[(#ENV{facteur_adresse_envoi,'non'}|=={non}|oui)checked="checked"]/>
    19                                                                 <label for="facteur_adresse_envoi_non"><:facteur:utiliser_reglages_site:></label>
     19                                                                <label for="facteur_adresse_envoi_non"><:facteur:utiliser_reglages_site{from=#ENV{_from_defaut}}:></label>
    2020                                                        </div>
    2121                                                        <div class="choix">
     
    3333                                                        <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{facteur_adresse_envoi_email})</span>]
    3434                                                        <input type="text" name="facteur_adresse_envoi_email" class="text" value="#ENV**{facteur_adresse_envoi_email}" id="facteur_adresse_envoi_email" />
     35                                                </li>
     36                                                #SET{name,facteur_forcer_from}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     37                                                <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
     38                                                        <span class='erreur_message'>(#GET{erreurs})</span>
     39                                                        ]
     40                                                        <div class="choix">
     41                                                                #SET{val,non}
     42                                                                <input type="hidden" name="#GET{name}" value="#GET{val}" />
     43                                                                #SET{val,oui}
     44                                                                <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
     45                                                                <label for="#GET{name}_#GET{val}"><:facteur:label_facteur_forcer_from:></label>
     46                                                        </div>
    3547                                                </li>
    3648                                        </ul>
  • _plugins_/facteur/trunk/formulaires/configurer_facteur.php

    r96733 r96774  
    1515                'facteur_adresse_envoi_nom'   => lire_config('facteur_adresse_envoi_nom'),
    1616                'facteur_adresse_envoi_email' => lire_config('facteur_adresse_envoi_email'),
     17                'facteur_forcer_from'         => lire_config('facteur_forcer_from'),
    1718                'facteur_smtp'                => lire_config('facteur_smtp'),
    1819                'facteur_smtp_host'           => lire_config('facteur_smtp_host'),
     
    3334        );
    3435
     36        // recuperer le from par defaut actuel pour l'indiquer dans le formulaire
     37        include_spip('classes/facteur');
     38        $facteur = new Facteur('','','','',array('adresse_envoi'=>'non'));
     39        $valeurs['_from_defaut'] = $facteur->From;
     40        if ($facteur->FromName){
     41                $valeurs['_from_defaut'] = $facteur->FromName . ' &lt;'.$valeurs['_from_defaut'].'&gt;';
     42        }
     43
    3544        return $valeurs;
    3645}
     
    114123        ecrire_meta('facteur_adresse_envoi_email', $facteur_adresse_envoi_email?$facteur_adresse_envoi_email:'');
    115124
     125        $facteur_forcer_from = _request('facteur_forcer_from');
     126        ecrire_meta('facteur_forcer_from', ($facteur_forcer_from=='oui')?'oui':'non');
     127
    116128        $facteur_smtp = _request('facteur_smtp');
    117129        ecrire_meta('facteur_smtp', ($facteur_smtp=='oui')?'oui':'non');
  • _plugins_/facteur/trunk/lang/facteur_fr.php

    r96772 r96774  
    5454        'facteur_smtp_username' => 'Nom d’utilisateur :',
    5555
     56        'label_facteur_forcer_from' => 'Forcer cette adresse d’envoi quand le <tt>From</tt> n’est pas sur le même domaine',
     57
    5658        // M
    5759        'message_identite_email' => 'La configuration du plugin "facteur" surcharge cette adresse email pour l’envoi de courriels.',
     
    6971        // U
    7072        'utiliser_mail' => 'Utiliser la fonction mail de PHP',
    71         'utiliser_reglages_site' => 'Utiliser les réglages du site SPIP : le nom affiché sera le nom du site SPIP et l’adresse email sera celle du webmaster',
     73        'utiliser_reglages_site' => 'Utiliser les réglages du site SPIP : <br /><tt>@from@</tt>',
    7274        'utiliser_smtp' => 'Utiliser SMTP',
    7375
  • _plugins_/facteur/trunk/paquet.xml

    r96733 r96774  
    22        prefix="facteur"
    33        categorie="communication"
    4         version="3.3.7"
     4        version="3.4.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.