Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 30/11/2012 18:10:56

petitspouces
Membre
Inscription : 30/11/2012
Messages : 6

envoyer un mail à tous les membres d'un groupe

Bonjour

Tout est dans le titre...

Comment faire pour envoyer un mail à tous les membres inscrits dans le groupe logon, par exemple ?

Je n'ai pas trouvé d'autres solutions que de récuperer les adresses une par une. C'est un peu long hmm

Auriez vous une idée ?
Par avance merci

Hors ligne

#2 30/11/2012 18:27:31

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

bonjour et bienvenue
ce n'est pas encore conçut dans ziteplus la fonction newsletters c'est un module qu'on attend avec impatience wink
Je ne suis pas assez doué en php pour tirer les vers du nez de ziteplus mais j'ai déja joué avec user.php qui se trouve dans le dossier ziteplus/module/user.php et c'est dans ce petit module que tu pourra récupéré les données que tu à besoin (si tu t'y connais en php)

sinon attendre la version 9.3 car je crois que jpg à améliorer ce fameux fichier user.php


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#3 30/11/2012 18:39:11

petitspouces
Membre
Inscription : 30/11/2012
Messages : 6

Re : envoyer un mail à tous les membres d'un groupe

Merci pour cette réponse rapide

Malheureusement, mes notions de php sont un peu vagues  sad
J'imagine qu'il faut un script qui recupère toutes les adresses du fichier user.dta puis les utiliser dans la validation d'un formulaire avec la méthode Post.
C'est ça ?

Hors ligne

#4 30/11/2012 18:50:39

Christian
Moderateurs
Inscription : 19/06/2010
Messages : 139

Re : envoyer un mail à tous les membres d'un groupe

Bonjour

dans le pied de user.php tu trouvera if ($admin) {

tu remplace par ces lignes pour afficher les emails :

[== PHP ==]
	if ($admin) {
		uksort($f, create_function('$a, $b', 'return strcmp($a[0], $b[0]);'));
		$out .= '<table class="ztable">';
		$out .= '<tr class="headcolor"><td>'.$this->get_message('colname').'</td><td>'.$this->get_message('coldesc').'</td><td><b>'.$this->get_message('mail').'</b></td><td>'.$this->get_message('colgroup').'</td><td></td></tr>';
		$i=0;foreach ($f as $clef => $valeur	) {
			$out .= '<tr class="'.(++$i%2 ? 'oddcolor' : 'evencolor').'"><td><a href="'.self::$cms->base.'user|'.$clef.'|edit">'.strtoupper($clef).'</a></td><td>'.$valeur[1].'</td><td>'.$valeur[4].'</td><td>'.implode(' ',$valeur[2]).'</td>';
			$out .= '<td align="center"><a href="'.self::$cms->base.'user|'.$clef.'|delete"><img src="deco/e1.png" /></a></td></tr>';
		}
		$out .= '</table>';
	}
	return $out;
}

Christian

Hors ligne

#5 30/11/2012 19:46:42

petitspouces
Membre
Inscription : 30/11/2012
Messages : 6

Re : envoyer un mail à tous les membres d'un groupe

Merci ça fonctionne.
Mais ce n'est qu'un première étape.

Comment puis je récupérer automatiquement toutes les adresses pour les placer en destinataire d'un mail envoyé par un formulaire très simple ?

Hors ligne

#6 30/11/2012 19:57:15

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

tu veut faire du tri dans les groupes exemple :
j'envoie un mail au utilisateur du groupe toto
ou à tous les utilisateurs???

il faut que seul l'admin est la possibilité d'envoyé un email ou tout utilisateurs peut envoyé un email ???

je peaufine la question pour découvrir les réponses smile


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#7 30/11/2012 20:12:57

petitspouces
Membre
Inscription : 30/11/2012
Messages : 6

Re : envoyer un mail à tous les membres d'un groupe

C'est vrai que je n'ai pas donner tous les détails  big_smile
Je veux l'envoyé à tous les utilisateurs, car il n'y a que 2 groupes : admin (moi) et logon (tous les autres). Si je reçois le mail, j'aurai une preuve de son bon envoi.

Seul l'admin peut voir le formulaire, c'est pourquoi je voulais l'insérer dans une page non publiée...

Hors ligne

#8 30/11/2012 20:42:19

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

voici un petit script php pour envoyer des email

[== PHP ==]
<?php
$destinataire = '';
$sujet = $_POST['sujet'];
$email=$_POST['email'];
$email2=$_POST['email2'];
$nom=$_POST['nom'];
$message=$_POST['message'];
$newsletter=$_POST['newsletter'];
$headers = 'From: <'.$email.'>' . "\r\n";

$messerr='';
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
  $messerr=$messerr."Adresse mail considérée comme NON valide.".'<br>';
}
if ($email!=$email2) {
  $messerr=$messerr."Les 2 adresses mails ne sont pas identiques.".'<br>';
}
if ($sujet=='') {
  $messerr=$messerr."Merci de mettre un sujet.".'<br>';
}
if ($message=='') {
  $messerr=$messerr."Le but de cette page est d'envoyer un message!! Alors mettez-en un! Merci.";
}
if ($nom=='') {
  $messerr=$messerr."Merci d'indiquer votre nom.";
}
if (isset($_POST['envoi']))
  {
  if ($messerr == '')
    {
    $sujet = "mon site " .html_entity_decode($sujet);
    $message = html_entity_decode($message);
    $message = str_replace('\'',"\'",$message);
    $message = str_replace('’',"\'",$message);
    $message = str_replace('<br>','',$message);
    $message = str_replace('<br />','',$message);
    $message = "message de ".$nom."\n".$message;
    $message = "newsletter ".$newsletter."\n".$message;
    if (mail($destinataire, $sujet, $message, $headers))
      {
      echo "L'envoi du mail a enfin réussi!!! BRAVO."."\n";
      }
    else
      {
      echo "L'envoi du mail a échoué, veuillez réessayer SVP."."\n";
      }
    }
  else
    {
    echo '<h3><font color=red>'.$messerr.'</font></h3>';
    }
  }

if (($messerr) || (!isset($_POST['envoi'])))
  {
        // afficher le formulaire

echo '        <h1>Formulaire de contact</h1>'."\n";
echo '<th colspan="2">Tous les champs sont obligatoires.</th><br><br>'."\n";
echo '<form action="" method="post" >'."\n";
echo '<table>'."\n";
echo '  <tr><td class="info">Votre email : </td><td class="champ"><input name="email" type="text" size="66"></td></tr>'."\n";
echo '  <tr><td class="info">Confirmez votre email : </td><td class="champ"><input name="email2" type="text" size="66"></td></tr>'."\n";

echo '  <tr><td class="info">Votre Nom : </td><td class="champ"><input name="nom" type="text" size="66"></td></tr>'."\n";

echo '  <tr><td class="info">Sujet : </td><td class="champ"><input name="sujet" type="text" size="66"></td></tr>'."\n";
echo '  <tr>'."\n";
echo '    <td class="contenu">Votre message</td>'."\n";
echo '  <td class="contenant"><textarea name="message" cols="50" rows="15"></textarea></td></tr>'."\n";
echo '  <tr><th colspan="1">'."\n";
echo '    <td class="lesboutons"><input type="reset" value="Annuler">'."\n";
echo '  <input type="submit" name="envoi" value="Envoyer"></td></th></tr>'."\n";
echo '</table>
<p><input type="checkbox" name="newsletter" id="newsletter" /> <label for="newsletter">souhaitez vous recevoir notre newsletter</label></p></form>'."\n";
  }
?>

je ne sais pas trop comment dans destinataire rajouté la $valeur4 du user.php
peut etre en rajoutant

[== PHP ==]
require_once('zplus/module/user.php');

et puis un petit foreach


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#9 30/11/2012 21:01:10

petitspouces
Membre
Inscription : 30/11/2012
Messages : 6

Re : envoyer un mail à tous les membres d'un groupe

Merci pour ce formulaire.

Je bloque également sur $destinataire.
J'ai essayé de renseigner avec $courriel après avoir rajouter

[== PHP ==]
 require_once('zplus/module/user.php');

mais sans succès

C'est là toute la complexité de la chose...

Hors ligne

#10 30/11/2012 22:17:46

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

dans le fichier user.php la variable email est $valeur4 wink


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#11 30/11/2012 22:30:49

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : envoyer un mail à tous les membres d'un groupe

Bonsoir,

le require user.php n'a pas lieu d'être pour ce que tu veux faire.

Tu devrais suivre la piste donnée par Christian.

Par exemple:

foreach ($this->user as $clef => $valeur) {
  //  $valeur[4] contient l'adresse courriel
  if (isset($valeur[4]) {
       fonction_qui_mail_a_ecrire_par_toi($valeur[4]);
  }
}

ps:  si tu as besoin du nom c'est  $valeur[5], pour le prénom c'est  $valeur[6]


a+
Jean-Paul

Hors ligne

#12 30/11/2012 23:00:13

petitspouces
Membre
Inscription : 30/11/2012
Messages : 6

Re : envoyer un mail à tous les membres d'un groupe

Ok, j'ai compris !!!
MERCI

Demain, je vous livre le code tout propre ...
merci encore pour votre aide

Hors ligne

#13 30/11/2012 23:13:57

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

ok on met le mail dans le fichier user.php on ne peut le faire dans une page wink
moi je tentais le diable et voulais récupérer les variables de mail dans une page php


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#14 30/11/2012 23:22:36

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : envoyer un mail à tous les membres d'un groupe

snypi a écrit :

ok on met le mail dans le fichier user.php on ne peut le faire dans une page wink
moi je tentais le diable et voulais récupérer les variables de mail dans une page php

non non, on le met dans une page et uniquement là wink
le principe est de ne pas modifier user.php qui n'a été cité  par Christian que comme exemple de code à adapter.

a+
Jean-Paul

Hors ligne

#15 30/11/2012 23:52:00

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

merci pour ce complément d'info mais perso j'arrive pas à affiché les mails sur une page
ce que christian à affiché je l'avais fait aussi en modifiant user.php pour que lorsqu'on ce connect en admin et que l'on vas voire la liste d'utilisateur on est en direct le mail de l'utilisateur en face du pseudo !!!


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#16 01/12/2012 00:07:24

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : envoyer un mail à tous les membres d'un groupe

snypi a écrit :

merci pour ce complément d'info mais perso j'arrive pas à affiché les mails sur une page

Dans une page de type PHP:

foreach ($this->user as $clef => $valeur) {
  if (!empty($valeur[4])) {
    echo "mail:${valeur[4]}<br/>";
  }
}

va  afficher les mails de tous les utilisateurs qui ont renseignés une adresse

a+
Jean-Paul

Hors ligne

#17 01/12/2012 00:10:02

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : envoyer un mail à tous les membres d'un groupe

petitspouces a écrit :

Ok, j'ai compris !!!
MERCI

Demain, je vous livre le code tout propre ...
merci encore pour votre aide

Après reflexion, ce code est mieux:

foreach ($this->user as $clef => $valeur) {
  //  $valeur[4] contient l'adresse courriel
  if (!empty($valeur[4])) {
       fonction_qui_mail_a_ecrire_par_toi($valeur[4]);
  }
}

a+
Jean-Paul

Hors ligne

#18 01/12/2012 00:23:05

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : envoyer un mail à tous les membres d'un groupe

merci jpg pour t lumière  cela fonctionne !! je découvre ziteplus de jours en jours smile et jamais déssus (à par mon niveau de php)


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

Pied de page des forums