Accéder au contenu.
Menu Sympa

fr - RE: [sympa-fr] Lien de désinscription

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: LALOT Dominique <adresse@cachée>
  • To: "adresse@cachée" <adresse@cachée>
  • Subject: RE: [sympa-fr] Lien de désinscription
  • Date: Mon, 27 Nov 2017 14:14:29 +0000


Bonjour


Je confirme ce que dit Luc et le gars au premier rang c'était bien moi. Pour que ça marche bien:

Eviter de construire un lien individualisé dans le mail, car on est obligé de faire un mail par personne au lieu de un mail par paquet de 100 destinataires..

Mettre footer_type append dans les config comme préconisé par Luc.


Partant de ce principe, il faut faire une appli casifiée qui met en liste d'exclusion la personne via l'interface soap de sympa. Les listes étant alimentées par des filtres LDAP

On appelle via soap la méthode subscribe ou unsubscribe


Côté sympa et conf du robot, activer soap dans le fichier "trusted_applications.conf"

trusted_application
    name amu
    md5password xxxxx
    proxy_for_variables USER_EMAIL,remote_host 

Ensuite côté code, un peu d'exemple:
Tester soap en perl:

#!/usr/bin/perl
use SOAP::Lite;
use Data::Dumper;
my $soap = new SOAP::Lite();
$soap->uri('urn:sympasoap');
$soap->proxy('http://listes.univ-amu.fr/sympasoap');

my $response = $soap->authenticateRemoteAppAndRun('amu', 'xxx', 'adresse@cachée', 'which', ['adresse@cachée']);
die $response->faultstring if ($response->fault);
if (ref($response->result) eq 'ARRAY'){
        #print Dumper($response->result);
        foreach (@{$response->result}){print "$_\n";}
}
else {
        print $response->result, "\n";
}




Et en PHP, voici à peu prés décortiqué ce qui est codé (codé par un collègue)


$subscribe = _subscribe_list_soap($liste,strtolower($mail),"subscribe");

$unsubscribe =_subscribe_list_soap($liste,strtolower($mail),"unsubscribe");


function _subscribe_list_soap($liste_name,$user_mail,$op)
{
  try {
    $client = new sympaSoapClient(sympa_wsdl, sympa_appname, sympa_apppwd);
    $client->proxyVar('USER_EMAIL', sympa_list_admin);
     /* print_r($client);*/
    switch($op)
    {
      case "subscribe":
        return $client->add($liste_name, $user_mail);

        break;
      case "unsubscribe":
        return $client->del($liste_name, $user_mail);

        break;
    }
    return false;

  } catch(Exception $e) {
    print( $e);
  }

}


class sympaSoapClient {
    private $client = null;

    private $wsdl = '';
    private $appname = '';
    private $apppwd = '';
    private $proxyvars = array();

  public function __construct($wsdl, $appname, $apppwd, $proxyvars = array()) {
        $this->wsdl = $wsdl;
        $this->appname = $appname;
        $this->apppwd = $apppwd;
        $this->proxyvars = $proxyvars;

        try {
            $opts = array('soap_version' => SOAP_1_1,'cache_wsdl' => 0);
            $this->client = @new SoapClient($this->wsdl, $opts);
        }catch(SoapFault $f) {
            throw new Exception('sympaSoapClient failed to connect using '.$this->wsdl.' : '.$f->getMessage());
        }
    }

  public function call($service, $params = array()) {
        if(!$this->client) return null;
        $proxyvars = array();
        foreach($this->proxyvars as $k => $v) $proxyvars[] = $k.'='.$v;
        $proxyvars = implode(';', $proxyvars);
        try {
            $res = $this->client->authenticateRemoteAppAndRun($this->appname, $this->apppwd, $proxyvars, $service, $params);

        }catch(SoapFault $f) {
            //throw new Exception('sympaSoapClient failed to call service "'.$service.'" using '.$this->wsdl.' and proxyvars='.$proxyvars.' : '.$f->getMessage());
            $res ="error";
        }
        return $res;
    }

  public function proxyVar($name, $value) {
        if(!$name) return;
        $this->proxyvars[$name] = $value;
  }

  public function add($list, $email) {
        $params = array(
            'list' => $list,
            'email' => $email,
        );

    try    {
      if($this->call('add', $params)!="error")      {
        return "OK";
      }
      else      {
        return "error";
      }
    }
    catch(Exception $e)    {
      return "error";
    }
  }
  public function del($list, $email) {
    $params = array(
            'list' => $list,
            'email' => $email,
        );
        try    {
           if($this->call('del', $params)!="error")      {
             return "OK";
           }
           else      {
             return "error";
           }
       }
       catch(Exception $e)    {
          return "error";
       }
  }
}


Bonne suite


--
Dominique LALOT
Responsable Pôle Environnement Numérique
Direction Opérationnelle du Système d'Information (DOSI)
( Aix * Marseille Université
Coordonnées: http://annuaire.univ-amu.fr/personnel/detail/bGFsb3Q=

De : adresse@cachée <adresse@cachée> de la part de Jean-Hugues Belpois <adresse@cachée>
Envoyé : lundi 27 novembre 2017 11:39:04
À : adresse@cachée
Objet : Re: [sympa-fr] Lien de désinscription
 
Bonjour à tous,

On vient de déployer nos listes syndicales, avec un footer du même
genre, car la question du désabonnent est sensible ici, et pour
l'instant on a pas de soucis (comprendre : on ne se fait pas engueuler).

*******

Vous recevez ce message car vous êtes abonné-e automatiquement à la
liste [% listname %] avec l'adresse [% user.email %].

Si vous souhaitez vous désabonner de cette liste pour ne plus recevoir
ses messages, cliquez sur
adresse@cachée?subject=UNSUBSCRIBE%20[% listname
%]&body=UNSUBSCRIBE%20[% listname %], et envoyez le courriel qui sera
automatiquement généré. Attention : c'est l'envoi de ce courriel qui va
vraiment vous désabonner.

*******

Mais si le problème remonte, on a dans nos cartons la solution suivante
: le lien enverra vers une page PHP, cassifiée, où l'intéressé-e pourra
se désabonner, ou plutôt confirmer sa demande de désabonnement.

Au passage : C'est pas un truc qu'on a évoqué à la bof des JRES ça ? Et
du coup y'a pas quelqu'un qui l'a déjà fait  ? Je pense au gars du 1er
rang dont je n'ai pas entendu le nom (pas de micro).

Bonne journée à toutes/tous.


--
Jean-Hugues Belpois
Listmaster - DSI
Université de Brest
<http://listes.univ-brest.fr>

Le 27/11/2017 à 11:26, Julien mlsupport a écrit :
> Bonjour,
>
> Nous avons configuré Sympa pour que sur les emails envoyés depuis les
> listes, on affiche un lien de désabonnement en bas de chaque mail,
> sous la forme :
> [% wwsympa_url %]/auto_signoff/[% listname %]/[% user.escaped_email %]
>
> Le problème est qu'en cliquant sur ce lien, ça envoie automatiquement
> un email qui permet de confirmer ou non sa désinscription.
>
> Y'a-t'il possibilité d'ajouter une étape ? C'est-à-dire qu'en cliquant
> sur le lien, la personne doit cocher son souhait de se désabonner.
> Nous souhaitons une telle étape, car beaucoup reçoivent les liens de
> demande de confirmation de désabonnement alors qu'ils n'ont pas cliqué
> sur ce mail. Je suppose que cela vient d'une solution antivirus/de
> sécurité, qui vérifie les liens présent dans les emails, et déclenche
> donc l'envoie de ces emails de désabonnement.
>
> Qu'en pensez-vous ?
>
> Merci.





Archives gérées par MHonArc 2.6.19+.

Haut de le page