Se connecter avec
S'enregistrer | Connectez-vous

Envoi newsletter - comment cacher les destinataires?

Dernière réponse : dans Programmation

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é';
}
?>
Lassé par la pub ? Créez un compte
Expert Programmation

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.

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. ?>

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: 

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

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!

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--;

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!!!

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. ?>

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

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...

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: 

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. ?>

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. ?>

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. ?>
Lassé par la pub ? Créez un compte
Tom's guide dans le monde