Eléphant du PHP |
418 Messages
10 oct. 2012, 15:31
J'ai un soucis, c'est lié à ce sujet, d’où le fait que j'en poste pas un autre
Voici que lorsque j'ai plusieurs emails, ça m'affiche un message me disant qu'il faut que je renseigne un email, alors qu'avec un seul mail, ça fonctionne.
Mailer Error: You must provide at least one recipient email address.
Voici le code utilisé pour l'envoi de l'email
<h3>Envoie d'emails de groupe</h3>
<div id="sous_content">
<?php
/*************/
if (isset($_POST['envoyer']))
{
//parsing des variables
$message = $_POST['message'];
$message = nl2br($message);
$selected_rank = $_POST['selected_rank'];
$selected_rank = ($selected_rank!=0)?$selected_rank:'';
$condition_rank = ($selected_rank!=0)?'AND t_users.rank_id = :rank':'';
$req = 'SELECT
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 '.$condition_rank.'
ORDER BY users_id ASC';
$query = $cnx->prepare($req);
$query->bindValue(':users_verif', 1,PDO::PARAM_BOOL);
if ($selected_rank!=0) { $query->bindValue(':rank', $selected_rank,PDO::PARAM_INT); }
$query->execute();
$body = "<html><body>
$message
<br /><br />
Cordialement, l'administrateur de ".SITE_NAME.".
<br /><br />
</body></html>";
$plain = 'contactez <a href="mailto:'.SITE_MAIL.'">'.SITE_MAIL.'</a> si vous voyez ce message'; // optional, comment out and test
#initiate PHPMailer class
$mail = new PHPMailer();
#set the from e-mail address
$mail->From = SITE_MAIL;
#set the from name
$mail->FromName = SITE_NAME;
#set the e-mail type to HTML
$mail->IsHTML(true);
#the subject of the email
$mail->Subject = "Couriel de ".SITE_NAME;
#the HTML content of the email
$mail->Body = $body;
#the plain text version
$mail->AltBody = $plain;
#add subscribers address as the recipient
$tab = array();
while($data = $query->fetch(PDO::FETCH_OBJ))
{
$tab[] = trim($data->users_mail);
}
$email = implode(',',$tab);
#add subscribers address as the recipient
$mail->AddAddress($email);
#sends the newsletter
$mail->Send();
#clears the recipient address
$mail->ClearAddresses();
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
else {
echo 'email envoyé';
}
echo '<br /> '.$email;
}
/*************/
$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">
Membre(s) :
<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>
<br />
Votre message :
<br />
<textarea class="span11" name="message" id="texte" cols="90" rows="10"></textarea>
<br />
<input type="submit" name="envoyer" value="Envoyer l'email" />
</form>
Pouvez vous m'expliquer comment faire pour faire l'envoie de l'emai?
Merci de votre aide
Cordialement