Un formulaire web pour l’abonnement/désabonnement à vos listes.
Pour qu’un utilisateur puisse s’abonner à une liste, la procédure habituelle consiste à envoyer un message au moteur qui gère la liste (sympa@mondomaine.delistes.tld) avec pour sujet :
subscribe nomdelaliste Prénom Nom
(le « Prénom Nom » est facultatif)
Pour se désabonner, c’est presque la même chose ; le sujet du message doit être :
unsubscribe nomdelaliste
Il faut être attentif pour le désabonnement que l’adresse de courriel utilisée soit bien celle qui était abonnée.
Vous pouvez donc créer un lien pour l’abonnement :
<a href="mailto:sympa@mondomaine.delistes.tld?subject=subscribe nomdelaliste">abonnement</a>
Ou pour le désabonnement :
<a href="mailto:sympa@mondomaine.delistes.tld?subject=unsubscribe nomdelaliste">désabonnement</a>
Mais il peut être pratique aussi d’utiliser un formulaire (qu’on peut mettre en bas d’une page : « abonnement à notre newsletter »). Nous vous proposons une formulaire standard à configurer, que vous pouvez réutiliser, modifier, distribuer à votre guise.
<!-- *************************************************************************** Script téléchargé sur https://ouvaton.coop This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *************************************************************************** --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Souscription à la liste de diffusion</title> <meta http-equiv="Content-type" content="application/xhtml+xml; charset=UTF-8" /> </head> <body> <? /* configuration du script */ $domaine = "votre.domainedeliste.tld" ; // obligatoire : donner le nom du domaine de liste $nombrelistes = 1 ; // obligatoire: remplir le nombre de listes définies ci-dessus $liste1 = "nomdelaliste" ; // obligatoire : donner au moins 1 nom de liste $liste2 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes $liste3 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes $liste4 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes $liste5 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes /* fin de la config */ // test de sécurité si le formulaire a été envoyé if (isset($_POST["send"]) ) { $secure = true ; $from = $_POST["from"] ; //test de l'adresse mail if(!preg_match('/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i',$from)) { echo('Adresse de courriel Invalide <br />') ; $secure = false ; } } // Si le formulaire n'a pas été envoyé ou n'est pas secure, on l'affiche if (!$secure) { ?> <form action="<? $_SERVER["PHP_SELF"] ?>" method="post"> <fieldset> <legend style="margin-bottom: 5px;">S'abonner ou se désabonner (<strong>*</strong> champs obligatoires)</legend> <label for="prenom">Prénom :</label> <input id="prenom" name="prenom" type="text" value="<? if ($_POST["prenom"]) echo $_POST["prenom"]?>" /><br /> <label for="nom">Nom :</label> <input id="nom" name="nom" type="text" value="<? if ($_POST["nom"]) echo $_POST["nom"]?>" /><br /><br /> <label for="from">Adresse de courriel<strong>*</strong> : </label> <input id="from" name="from" type="text" value="<? if ($_POST["from"]) echo $_POST["from"]?>" /><br /><br /> Je veux<strong>*</strong> :<br /> <input name="action" type="radio" value="SUBSCRIBE" /> m'abonner à...<br /> <input name="action" type="radio" value="UNSUBSCRIBE" /> me désabonner de...<br /><br /> <label for="liste">... la liste<strong>*</strong> :</label> <select id="liste" name="liste"> <? if ($nombrelistes >= 1) { ?> <option value="<? echo $liste1;?>"><? echo $liste1;?></option> <? if ($nombrelistes >= 2) { ?> <option value="<? echo $liste2;?>"><? echo $liste2;?></option> <? if ($nombrelistes >= 3) { ?> <option value="<? echo $liste3;?>"><? echo $liste3;?></option> <? if ($nombrelistes >= 4) { ?> <option value="<? echo $liste4;?>"><? echo $liste4;?></option> <? if ($nombrelistes == 5) { ?> <option value="<? echo $liste5;?>"><? echo $liste5;?></option> <? } } } } } ?> </select><br /><br /> <input value="Envoyer" name="send" type="submit" /> </fieldset> </form> <? } else { // Si c'est ok - sécurisé et données // on crée le nom complet $nomcomplet = $_POST["prenom"] ." " .$_POST["nom"]; // puis le header du message $headers = "From: ".$from."\n" ; // puis les arguments $to = "sympa@" .$domaine ; $subject = "" ; if ($_POST["action"] == "SUBSCRIBE") { $message = $_POST["action"]." ".$_POST["liste"]." ".$nomcomplet; } else { $message = $_POST["action"]." ".$_POST["liste"]; } // On envoie le mail : if ( mail($to,$subject,$message,$headers) ) { // Si le mail a bien été envoyé, message de confirmation echo "Votre abonnement/désabonnement a bien été pris en compte.<br />"; } else { // sinon, message d'erreur. echo "Votre abonnement/désabonnement n\'a pas pu être envoyé.<br />"; } } ?> <p><a href="http://validator.w3.org/check?uri=referer"><img style="border:0px;" src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a></p> </body> </html>