Votre question

Envoi newsletter - comment cacher les destinataires?

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
5 Juin 2007 11:54:24

Bonjour à tous,
J'utilise le code qui suit pour envoyer la newsletter de mon site aux adresses mail contenues dans ma base de données. Je voulais savoir comment transformer mon code pour que la liste des destinataires n'apparaisse plus quand les personnes reçoivent le mail.
Merci d'avance pour votre aide, voici le script d'envoi de ma newsletter :

<?php
include ("connexion.php");
$adresses = mysql_query("SELECT email FROM newsletter") or die(mysql_error());
$liste_adresses = array();
while ($add = mysql_fetch_row($adresses)){
$liste_adresses[]=$add[0];
}
$to = implode(',',$liste_adresses);
unset($liste_adresses);
mysql_free_result($adresses);
$subject = 'Newsletter de *******.fr';
$headers ='From: "*******.fr"<******@****.fr>'."\n";
$headers .='Reply-To: *****@****.fr'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<html>
Le code de ma page newsletter
</html>';

if(mail($to,$subject,$message,$headers))
{
echo 'Le message a été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
?>

Autres pages sur : envoi newsletter cacher destinataires

5 Juin 2007 12:48:06

fait la boucle de :

$to = implode(',',$liste_adresses);

à

} (du else)

afin d'envoyé un par un ce contenu pour chaque adresse mail et non pas de faire une liste en bcc (copie pour les destinataire) comme tu le fais actuellement.
5 Juin 2007 15:05:50

oulala désolée je débute en php et là je vois pas du tout comment faire une boucle à l'endroit que tu demande!
Contenus similaires
5 Juin 2007 16:55:35

si je ne me trompe pas ca devrait faire ca

  1. <?php
  2. include ("connexion.php" );
  3. $adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
  4. $liste_adresses = array();
  5. while ($add = mysql_fetch_row($adresses)){
  6. $liste_adresses[]=$add[0];
  7. }
  8. {
  9. $to = implode(',',$liste_adresses);
  10. unset($liste_adresses);
  11. mysql_free_result($adresses);
  12. $subject = 'Newsletter de *******.fr';
  13. $headers ='From: "*******.fr"<******@****.fr>'."\n";
  14. $headers .='Reply-To: *****@****.fr'."\n";
  15. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  16. $headers .='Content-Transfer-Encoding: 8bit';
  17. $message ='<html>
  18. Le code de ma page newsletter
  19. </html>';
  20.  
  21. if(mail($to,$subject,$message,$headers))
  22. {
  23. echo 'Le message a été envoyé';
  24. }
  25. else
  26. {
  27. echo 'Le message n\'a pu être envoyé';
  28. }
  29. }
  30. ?>

6 Juin 2007 11:47:44

J'ai fait ce que tu m'a dit, mais maintenant je ne reçois plus la newsletter (malgré qu'il me dit que le message a bien été envoyé)...
6 Juin 2007 13:55:19

en fait je l'ai bien reçue (ça a mis du temps) mais les destinataires sont toujours visibles, malgré la boucle...
6 Juin 2007 14:37:13

j'ai peux-etre une idée :bounce: 

si tu as un champs id en autoincrémentation chaque personne à son propre id

essay de faire un scrit du genre

-envois message id=0
-envois message id=0+1
-envois message id=1+1

etc.....

comme ca chaque personne recoit son message, si tu n'y arrive pas je t'aiderais........... enfin après le boulot :pfff: 
6 Juin 2007 15:42:17

effectivement mon champ id est bien en auto-incrémentation mais je vois pas trop comment m'y prendre d'après ce que tu me dis... donc j'accepte volontiers ton aide après le boulot :ange: 
6 Juin 2007 16:08:05

voila un truc que jai concoté
  1. <?php
  2. include ("connexion.php" );
  3. $nbrid = mysql_query("SELECT COUNT(*) FROM email");
  4. $nb = mysql_result($nbreponses, 0, 0);
  5. while ($nb !> 0) {
  6. $nb - 1;
  7.  
  8.  
  9.  
  10. $adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
  11. $liste_adresses = array();
  12. while ($add = mysql_fetch_row($adresses)){
  13. $liste_adresses[]=$add[0];
  14. }
  15. $to = implode(',',$liste_adresses);
  16. unset($liste_adresses);
  17. mysql_free_result($adresses);
  18. $subject = 'Newsletter de *******.fr';
  19. $headers ='From: "*******.fr"<******@****.fr>'."\n";
  20. $headers .='Reply-To: *****@****.fr'."\n";
  21. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  22. $headers .='Content-Transfer-Encoding: 8bit';
  23. $message ='<html>
  24. Le code de ma page newsletter
  25. </html>';
  26.  
  27. }
  28. if(mail($to,$subject,$message,$headers))
  29. {
  30. echo 'Le message a été envoyé';
  31. }
  32. else
  33. {
  34. echo 'Le message n\'a pu être envoyé';
  35. }
  36. ?>


en théorie ca marche mais bon ce n'est que de la théorie :D 
si ca marche pas, je verrais ca ce soir sauf si quelqu'un de plus comfirmé que moi en programation passe par la
6 Juin 2007 17:16:19

Alors je viens d'essayer ce que tu as dit et malheureusement il y a une erreur de syntaxe dans le code :
Parse error: syntax error, unexpected '!' in ... line 14 ce qui correspond à cette ligne

while ($nb !> 0) {

Voilà je ne sais pas trop ce qu'il faut changer là je t'avouerais que je suis larguée avec ce script...

En tout cas pour moi l'heure du week end va sonner (wah la chance) mais je reviendrais lundi et je te remercie d'avance si tu as une solution à proposer d'ici là (ou quelqu'un d'autre bien sûr)

Merci de m'aider en tout cas!

6 Juin 2007 17:20:12

ca y est la fin de journée a sonné pour moi


si tu es encore la essay de remplacer ca bout de code (include ("connexion.php" );
$nbrid = mysql_query("SELECT COUNT(*) FROM email" );
$nb = mysql_result($nbreponses, 0, 0);
while ($nb !> 0) {
$nb - 1;



$adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
$liste_adresses = array();
)
par ca:

while ($nb >= 1) {
print $nb--;
11 Juin 2007 13:57:27

Salut,
J'ai bien changé la partie que tu m'as dit comme tu l'as indiqué, mais j'ai toujours un message d'erreur quand j'essaie d'envoyer ma newsletter :

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in ********* line 13
Le message n'a pu être envoyé

ce qui correspond à la ligne suivante du code :
$nb = mysql_result($nbreponses, 0, 0);


au secours!!!
12 Juin 2007 09:54:18

salut

je ne suis vraiment pas sur du tout, ca m'étonnerait meme que ca fonctionne mais teste ca (on sais jamais ^^ :)  )
  1. <?php
  2. include ("connexion.php" );
  3. $nbrid = mysql_query("SELECT COUNT(*) FROM email" );
  4. while ($donnees = mysql_fetch_array($retour))
  5. {
  6. $nb = mysql_result($nbreponses, 0, 0);
  7. }
  8. while ($nb !> 0)
  9. {
  10. $nb - 1;
  11.  
  12.  
  13.  
  14. $adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
  15. $liste_adresses = array();
  16. while ($add = mysql_fetch_row($adresses)){
  17. $liste_adresses[]=$add[0];
  18. }
  19. $to = implode(',',$liste_adresses);
  20. unset($liste_adresses);
  21. mysql_free_result($adresses);
  22. $subject = 'Newsletter de *******.fr';
  23. $headers ='From: "*******.fr"<******@****.fr>'."\n";
  24. $headers .='Reply-To: *****@****.fr'."\n";
  25. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  26. $headers .='Content-Transfer-Encoding: 8bit';
  27. $message ='<html>
  28. Le code de ma page newsletter
  29. </html>';
  30. }
  31. }
  32. if(mail($to,$subject,$message,$headers))
  33. {
  34. echo 'Le message a été envoyé';
  35. }
  36. else
  37. {
  38. echo 'Le message n\'a pu être envoyé';
  39. }
  40.  
  41. ?>

12 Juin 2007 10:50:57

Petite question quand tu mets :

$nbrid = mysql_query("SELECT COUNT(*) FROM email" );

Ca ne serait pas plutot

$nbrid = mysql_query("SELECT COUNT(*) FROM newsletter" ); ?

Car ma table s'appelle newsletter et non email mais je ne sais pas si on compte dans la table ou dans le champ email...

mais en tout cas j'ai essayé ton code et ca marche toujours pas
12 Juin 2007 10:55:25

Pourquoi ne pas mettre la liste d'adresse en CCI ?
12 Juin 2007 11:00:33

Car je n'utilise pas de logiciel de messagerie pour envoyer ma newsletter donc je ne sais pas si cette fonctionnalité existe en script et comment l'utiliser dans le code php qui me permet d'envoyer ma newsletter...
12 Juin 2007 11:28:00

Citation :
$nbrid = mysql_query("SELECT COUNT(*) FROM email" );

Ca ne serait pas plutot

$nbrid = mysql_query("SELECT COUNT(*) FROM newsletter" ); ?


oups je viens de remarqué que ce que j'ai fait n'était pas complet, j'éssayrais de te faire un script complet dans la journée sinon ce que j'éssayais de faire c'est ca (mais ce que j'ai fait est complétement faux dsl) ((j'en ^rpfite pour l'améliorer en meme temps)

-on récupère les id (si c'est bien de 1 à xx nombre)
-avec une boucle on envois le méssage à chaque id

j'éssay de te faire ca dans la journée et encore désolé pour ma "petite" (énorme) erreur :jap: 
12 Juin 2007 11:30:19

pas de problème ca peut arriver en tant que débutante j'en fais tt le tps des boulettes!!!
Merci pour ton aide à plus tard
12 Juin 2007 11:38:04

maudus a dit :
Car je n'utilise pas de logiciel de messagerie pour envoyer ma newsletter donc je ne sais pas si cette fonctionnalité existe en script et comment l'utiliser dans le code php qui me permet d'envoyer ma newsletter...


Bien sûr que c'est possible, le mot clé s'appelle "Bcc" et il est utilisé exactement comme le "To".

Du coup je ferais un truc comme ça:

  1. <?php
  2. include ("connexion.php" );
  3. $adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
  4. $liste_adresses = array();
  5. while ($add = mysql_fetch_row($adresses)){
  6. $liste_adresses[]=$add[0];
  7. }
  8. $bcc = implode(',',$liste_adresses);
  9. $to = "My Friends";
  10. unset($liste_adresses);
  11. mysql_free_result($adresses);
  12. $subject = 'Newsletter de *******.fr';
  13. $headers ='From: "*******.fr"<******@****.fr>'."\n";
  14. $headers .='Reply-To: *****@****.fr'."\n";
  15. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  16. $headers .='Content-Transfer-Encoding: 8bit';
  17. $headers .='Bcc: $bcc';
  18. $message ='<html>
  19. Le code de ma page newsletter
  20. </html>';
  21.  
  22. if(mail($to,$subject,$message,$headers))
  23. {
  24. echo 'Le message a été envoyé';
  25. }
  26. else
  27. {
  28. echo 'Le message n\'a pu être envoyé';
  29. }
  30. ?>
12 Juin 2007 13:54:08

Rodyrod j'ai essayé la solution que tu propose mais le problème maintenant c'est qu'il me dit bien que le message a été envoyé, mais je ne reçois plus rien!
12 Juin 2007 14:07:04

Essaye de changer le séparateur ',' en ';' dans ton implode.
Edit: ajoute des \n aussi :

  1. <?php
  2. include ("connexion.php" );
  3. $adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
  4. $liste_adresses = array();
  5. while ($add = mysql_fetch_row($adresses)){
  6. $liste_adresses[]=$add[0];
  7. }
  8. $bcc = implode(';',$liste_adresses);
  9. $to = "My Friends";
  10. unset($liste_adresses);
  11. mysql_free_result($adresses);
  12. $subject = 'Newsletter de *******.fr';
  13. $headers ='From: "*******.fr"<******@****.fr>'."\n";
  14. $headers .='Reply-To: *****@****.fr'."\n";
  15. $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
  16. $headers .='Content-Transfer-Encoding: 8bit'."\n";
  17. $headers .='Bcc: $bcc'."\n";
  18. $message ='<html>
  19. Le code de ma page newsletter
  20. </html>';
  21.  
  22. if(mail($to,$subject,$message,$headers))
  23. {
  24. echo 'Le message a été envoyé';
  25. }
  26. else
  27. {
  28. echo 'Le message n\'a pu être envoyé';
  29. }
  30. ?>
12 Juin 2007 14:25:30

pareil, le message bien envoyé mais c'est le grand vide dans ma boite mail
12 Juin 2007 15:02:28

as-tu éssayé avec une autre adresse mail ?
12 Juin 2007 15:24:41

pour l'instant j'ai mis dans ma base mes 3 adresses mail + celle de ma collègue et rien nulle part
12 Juin 2007 15:53:57

Quel est ton hébergeur, ainsi que les domaines des adresses ?
12 Juin 2007 15:58:18

Mon hébergeur est ovh et dans mes adresses j'ai hotmail, yahoo, et adresses professionnelles
12 Juin 2007 16:06:10

Et avant que tu veuilles passer en copie cachée, tu réussissais à envoyer des mails aux mêmes adresses ?
12 Juin 2007 16:17:51

Oui tout fonctionnait nickel avant
12 Juin 2007 18:05:59

et avec BCC en majuscules ?

Et rechange le ";" en "," pour être certain...

  1. <?php
  2. include ("connexion.php" );
  3. $adresses = mysql_query("SELECT email FROM newsletter" ) or die(mysql_error());
  4. $liste_adresses = array();
  5. while ($add = mysql_fetch_row($adresses)){
  6. $liste_adresses[]=$add[0];
  7. }
  8. $bcc = implode(',',$liste_adresses);
  9. $to = "My Friends";
  10. unset($liste_adresses);
  11. mysql_free_result($adresses);
  12. $subject = 'Newsletter de *******.fr';
  13. $headers ='From: "*******.fr"<******@****.fr>'."\r\n";
  14. $headers .='Reply-To: *****@****.fr'."\r\n";
  15. $headers .='Content-Type: text/html; charset="iso-8859-1'."\r\n";
  16. $headers .='Content-Transfer-Encoding: 8bit'."\r\n";
  17. $headers .='BCC: $bcc'."\r\n";
  18. $message ='<html>
  19. Le code de ma page newsletter
  20. </html>';
  21.  
  22. if(mail($to,$subject,$message,$headers))
  23. {
  24. echo 'Le message a été envoyé';
  25. }
  26. else
  27. {
  28. echo 'Le message n\'a pu être envoyé';
  29. }
  30. ?>
13 Juin 2007 09:49:36

Ca ne fonctionne toujours pas! quelle m***e!!!
13 Juin 2007 14:00:11

up svp
14 Juin 2007 09:48:22

plus personne pour m'aider?
14 Juin 2007 11:29:01

Sinon en reprenant le code de quarty, qui préconisait de lancer la méthode main pour chaque adresse.
14 Juin 2007 12:42:37

je suis vraiment désolé maudus mais en ce moment je ne peux vraiment pas t'aider :pfff: 
14 Juin 2007 13:47:49

tant pis je vais aller poster sur un autre forum merci quand même pour votre aide
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS