par
Fre3z69 » 11 oct. 2012, 05:50
Problème résolut, mauvaise concéption du script qui parse les données pour la varibale $mail -> xxx
Merci à vous Cordialement
Ps: Si le script vous intéresse, voici un première base, c'est certainement améliorable, mais j'ai pas besion de plus que d'envoyer des infos aux groupes souhaités ^^
<h3>Géstionnaire des courriels de masse</h3>
<div id="sous_content">
<?php
/*************/
if (isset($_POST['envoyer']))
{
if (empty($_POST['selected_rank']) || empty($_POST['message']) || empty($_POST['titre'])){
echo '<p><span class="alert">Remplissez tous les champs SVP</span></p>';
}
else
{
$selected_rank = $_POST['selected_rank'];
$selected_rank = ($selected_rank!=0)?$selected_rank:'';
// si on a choissis tout le monde, alors
$condition_rank = ($selected_rank!=0)?'AND t_users.rank_id = :rank':'';
// on prépare la requete
$req = 'SELECT
t_users.users_name,t_users.users_mail
FROM t_users
LEFT JOIN t_rank ON t_rank.rank_id = t_users.rank_id
LEFT JOIN t_online ON online_id = users_id
WHERE users_verif = :users_verif AND t_users.rank_id != :users_verif AND t_users.rank_id != :users_bannis AND t_users.rank_id != :users_anonyme '.$condition_rank.'
ORDER BY users_id ASC';
$query = $cnx->prepare($req);
$query->bindValue(':users_verif', 1,PDO::PARAM_BOOL);
$query->bindValue(':users_bannis', 1,PDO::PARAM_INT);
$query->bindValue(':users_anonyme', 2,PDO::PARAM_INT);
if ($selected_rank!=0) { $query->bindValue(':rank', $selected_rank,PDO::PARAM_INT); }
/**/
//parsing des variables
$message = $_POST['message'];
$titre = $_POST['titre'];
$message = nl2br($message);
// on définit le message
#SITE_NAME est une constante prédéfinie
#SITE_MAIL est une constante prédéfinie
$body = "<html><body>
<center><img src='url de l'image' /></center>
<h2>$titre</h2>
$message
<p>Cordialement, l'administrateur de ".SITE_NAME.".</p>
</body></html>";
$subject = "Lettre d'information de ".SITE_NAME; // on définit le titre
$altbody = 'contactez <a href="mailto:'.SITE_MAIL.'">'.SITE_MAIL.'</a> si vous voyez ce message'; // Si le message à une erreur
#initiate PHPMailer class
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
// Attention à définir des constantes, ou des variables pour les valeurs de "Port" à "auth_password"
$mail->Port = SITE_SMTP_PORT; // set the SMTP port
$mail->Host = SITE_SMTP; // SMTP server
$mail->Username = SITE_MAIL; // SMTP account username
$mail->Password = SITE_SMTP_PASS;
$mail->auth_username = SITE_MAIL; // SMTP account username
$mail->auth_password = SITE_SMTP_PASS;
$mail->AddReplyTo(SITE_MAIL, SITE_NAME);
$mail->SetFrom(SITE_MAIL, SITE_NAME);
// $mail->AddAddress(SITE_MAIL);
$query->execute();// on exécute la requete
while($data = $query->fetch(PDO::FETCH_ASSOC))
{
$email = $data['users_mail'];
$nom = $data['users_name'];
$mail->AddBCC ($email,$nom); // on envoie en caché, afin que personne ne voye les emails des utilisateur, pour envoyer normalement, c'est AddAdresse
}
$mail->Subject = $subject;
$mail->AltBody = $altbody;
$mail->MsgHTML($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
else {
echo '<p><span class="reussi">email envoyé</span></p>
<script type="text/javascript">
<!--
setTimeout(function()
{
window.location.href="./";
},2000);
//-->
</script>';
}
}
}
/*************/
$query = $cnx->prepare('SELECT
t_rank.rank_id,
t_rank.rank_libelle
FROM t_rank
WHERE t_rank.rank_id != :rank1 AND t_rank.rank_id != :rank2
ORDER BY rank_id ASC');
$query->bindValue(':rank1', 1,PDO::PARAM_INT);
$query->bindValue(':rank2', 2,PDO::PARAM_INT);
$query->execute();
//Si la requête retourne un truc, le membre existe
?>
<form action="index.php?r=newsletter" method="POST">
<fieldset>
<legend>Envoie d'un courriel de masse :</legend>
<dl>
<dd>
Séléctionner le groupe :<br />
<select name="selected_rank">
<option value="0">Tous</option>
<?php
while($data = $query->fetch())
{
?>
<option value="<?php echo $data['rank_id']; ?>"><?php echo $data['rank_libelle']; ?></option>
<?php
}
?>
</select>
</dd>
<dd>
Titre de l'email :<br />
<input type="text" name="titre" value="" />
</dd>
<dd>
Message de l'email :<br />
<textarea class="span11" name="message" id="texte" cols="90" rows="10"></textarea>
</dd>
<dd>
<input type="submit" name="envoyer" value="Envoyer l'email" />
</dd>
</dl>
</fieldset>
</form>
Cordialement
Problème résolut, mauvaise concéption du script qui parse les données pour la varibale $mail -> xxx
Merci à vous Cordialement
Ps: Si le script vous intéresse, voici un première base, c'est certainement améliorable, mais j'ai pas besion de plus que d'envoyer des infos aux groupes souhaités ^^
[php]<h3>Géstionnaire des courriels de masse</h3>
<div id="sous_content">
<?php
/*************/
if (isset($_POST['envoyer']))
{
if (empty($_POST['selected_rank']) || empty($_POST['message']) || empty($_POST['titre'])){
echo '<p><span class="alert">Remplissez tous les champs SVP</span></p>';
}
else
{
$selected_rank = $_POST['selected_rank'];
$selected_rank = ($selected_rank!=0)?$selected_rank:'';
// si on a choissis tout le monde, alors
$condition_rank = ($selected_rank!=0)?'AND t_users.rank_id = :rank':'';
// on prépare la requete
$req = 'SELECT
t_users.users_name,t_users.users_mail
FROM t_users
LEFT JOIN t_rank ON t_rank.rank_id = t_users.rank_id
LEFT JOIN t_online ON online_id = users_id
WHERE users_verif = :users_verif AND t_users.rank_id != :users_verif AND t_users.rank_id != :users_bannis AND t_users.rank_id != :users_anonyme '.$condition_rank.'
ORDER BY users_id ASC';
$query = $cnx->prepare($req);
$query->bindValue(':users_verif', 1,PDO::PARAM_BOOL);
$query->bindValue(':users_bannis', 1,PDO::PARAM_INT);
$query->bindValue(':users_anonyme', 2,PDO::PARAM_INT);
if ($selected_rank!=0) { $query->bindValue(':rank', $selected_rank,PDO::PARAM_INT); }
/**/
//parsing des variables
$message = $_POST['message'];
$titre = $_POST['titre'];
$message = nl2br($message);
// on définit le message
#SITE_NAME est une constante prédéfinie
#SITE_MAIL est une constante prédéfinie
$body = "<html><body>
<center><img src='url de l'image' /></center>
<h2>$titre</h2>
$message
<p>Cordialement, l'administrateur de ".SITE_NAME.".</p>
</body></html>";
$subject = "Lettre d'information de ".SITE_NAME; // on définit le titre
$altbody = 'contactez <a href="mailto:'.SITE_MAIL.'">'.SITE_MAIL.'</a> si vous voyez ce message'; // Si le message à une erreur
#initiate PHPMailer class
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
// Attention à définir des constantes, ou des variables pour les valeurs de "Port" à "auth_password"
$mail->Port = SITE_SMTP_PORT; // set the SMTP port
$mail->Host = SITE_SMTP; // SMTP server
$mail->Username = SITE_MAIL; // SMTP account username
$mail->Password = SITE_SMTP_PASS;
$mail->auth_username = SITE_MAIL; // SMTP account username
$mail->auth_password = SITE_SMTP_PASS;
$mail->AddReplyTo(SITE_MAIL, SITE_NAME);
$mail->SetFrom(SITE_MAIL, SITE_NAME);
// $mail->AddAddress(SITE_MAIL);
$query->execute();// on exécute la requete
while($data = $query->fetch(PDO::FETCH_ASSOC))
{
$email = $data['users_mail'];
$nom = $data['users_name'];
$mail->AddBCC ($email,$nom); // on envoie en caché, afin que personne ne voye les emails des utilisateur, pour envoyer normalement, c'est AddAdresse
}
$mail->Subject = $subject;
$mail->AltBody = $altbody;
$mail->MsgHTML($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
else {
echo '<p><span class="reussi">email envoyé</span></p>
<script type="text/javascript">
<!--
setTimeout(function()
{
window.location.href="./";
},2000);
//-->
</script>';
}
}
}
/*************/
$query = $cnx->prepare('SELECT
t_rank.rank_id,
t_rank.rank_libelle
FROM t_rank
WHERE t_rank.rank_id != :rank1 AND t_rank.rank_id != :rank2
ORDER BY rank_id ASC');
$query->bindValue(':rank1', 1,PDO::PARAM_INT);
$query->bindValue(':rank2', 2,PDO::PARAM_INT);
$query->execute();
//Si la requête retourne un truc, le membre existe
?>
<form action="index.php?r=newsletter" method="POST">
<fieldset>
<legend>Envoie d'un courriel de masse :</legend>
<dl>
<dd>
Séléctionner le groupe :<br />
<select name="selected_rank">
<option value="0">Tous</option>
<?php
while($data = $query->fetch())
{
?>
<option value="<?php echo $data['rank_id']; ?>"><?php echo $data['rank_libelle']; ?></option>
<?php
}
?>
</select>
</dd>
<dd>
Titre de l'email :<br />
<input type="text" name="titre" value="" />
</dd>
<dd>
Message de l'email :<br />
<textarea class="span11" name="message" id="texte" cols="90" rows="10"></textarea>
</dd>
<dd>
<input type="submit" name="envoyer" value="Envoyer l'email" />
</dd>
</dl>
</fieldset>
</form>[/php]
Cordialement