Tom's Guide > Forum > Programmation > Envoi newsletter - comment cacher les destinataires?

Envoi newsletter - comment cacher les destinataires?

Forum Programmation : Envoi newsletter - comment cacher les destinataires?

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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é';
}
?>

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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.

Répondre à okinou

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!

Répondre à maudus

si je ne me trompe pas ca devrait faire ca

Code :
  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.     if(mail($to,$subject,$message,$headers)) 
  21.     { 
  22.           echo 'Le message a été envoyé'; 
  23.     } 
  24.     else 
  25.     { 
  26.           echo 'Le message n\'a pu être envoyé'; 
  27.     } 
  28. }
  29. ?>



Message édité par quarty le 05-06-2007 à 16:55:52
Répondre à quarty

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

Répondre à maudus

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

Répondre à maudus

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:

Répondre à quarty

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:

Répondre à maudus

voila un truc que jai concoté

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



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

Répondre à quarty

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!

Répondre à maudus

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


Message édité par quarty le 06-06-2007 à 17:20:49
Répondre à quarty

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

Répondre à maudus

salut

je ne suis vraiment pas sur du tout, ca m'étonnerait meme que ca fonctionne mais teste ca (on sais jamais ^^ :) )

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


Répondre à quarty

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


Message édité par maudus le 12-06-2007 à 10:52:36
Répondre à maudus

Pourquoi ne pas mettre la liste d'adresse en CCI ?

------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

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

Répondre à maudus

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:

Répondre à quarty

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

Répondre à maudus

maudus a écrit :

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:

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


Message édité par rodyrod le 12-06-2007 à 11:51:48
------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

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!

Répondre à maudus

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

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


Message édité par rodyrod le 12-06-2007 à 14:19:51
------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

pareil, le message bien envoyé mais c'est le grand vide dans ma boite mail

Répondre à maudus

as-tu éssayé avec une autre adresse mail ?

Répondre à quarty

pour l'instant j'ai mis dans ma base mes 3 adresses mail + celle de ma collègue et rien nulle part

Répondre à maudus

Quel est ton hébergeur, ainsi que les domaines des adresses ?

------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

Mon hébergeur est ovh et dans mes adresses j'ai hotmail, yahoo, et adresses professionnelles

Répondre à maudus

Et avant que tu veuilles passer en copie cachée, tu réussissais à envoyer des mails aux mêmes adresses ?

------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

Oui tout fonctionnait nickel avant

Répondre à maudus

et avec BCC en majuscules ?

 

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

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


Message édité par rodyrod le 12-06-2007 à 18:13:12
------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

Ca ne fonctionne toujours pas! quelle m***e!!!

Répondre à maudus

plus personne pour m'aider?

Répondre à maudus

Sinon en reprenant le code de quarty, qui préconisait de lancer la méthode main pour chaque adresse.

------------------------------ There is no French word to say "entrepreneur"
George W. Bush
Répondre à rodyrod

je suis vraiment désolé maudus mais en ce moment je ne peux vraiment pas t'aider :pfff:

Répondre à quarty

tant pis je vais aller poster sur un autre forum merci quand même pour votre aide

Répondre à maudus
Tom's Guide > Forum > Programmation > Envoi newsletter - comment cacher les destinataires?
Aller à :

Il y a 1903 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens