Problème script php (newsletter)

Résolu
Jew -  
 NEZA -
Bonjour,

Sa fait plusieurs heure que j'éssaye d'installer une newsletter sur mon site web et mon seul problème est dans ce script ,
celui-ci doit envoyé le message que j'ai écrit sur la page précédente aux e-mails de ceux qui se sont inscrits (dans ma base de donnée)..
L'envoi du mail fonctionne, je reçois l'objet, nom, l'e-mail,.. MAIS je ne reçois pas le message.
Voici le script:

<?php
$message = ($_POST['mess']);
include("parametres.php");
$connexion = mysql_connect("$chemin_db" , "$login" , "$pass");
$sql = "SELECT * FROM newsletter";
$result = mysql_db_query($database , $sql , $connexion);

while($resultat = mysql_fetch_array($result))

{ $objet = "NewsLetter";

$message = "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "From: $nom_du_site <$votreemail>\n";
$headers .= "X-Sender: <$votreemail>\n";
$headers .= "X-Mailer: PHP\n";
$headers .= "Return-Path: <$votreemail>\n";

mail("$resultat[email]", $objet, "$message", $headers);
}
?>

Merci d'avance pour votre aide!
Configuration: Windows XP
Internet Explorer 7.0

14 réponses

  1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
     
    Salut.

    Es-tu sûr de ta valeur $_POST['mess'] ? Est-elle bien récupérée ?

    D'autre part, tu fais
    $message = ($_POST['mess']);
    et ensuite
     $message = "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";
    La valeur de $message sera donc cette dernière.... Mets .= si tu veux concaténer.

    Et fais plutôt ceci (ça ne devrait rien changer, mais c'est plus clair à mon sens):
    mail($resultat['email'], $objet, $message, $headers); 
    M'enfin c'est bizarre tout de même...

    T'as testé un envoi tout bête (non paramétré) avec la fonction mail() pour voir si tu recevais tout ? Genre
    <?php
    $dest="toto@toto.com";
    $objet = "NewsLetter";
    $message = "ton message";
    $headers ='From: "nom"<adresse@fai.fr>'."\n"; 
    
    mail($dest,$objet,$message,$headers);
    ?>
    @+
    0
  2. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
     
    De mon côté, j'ai testé ceci :
    <?php
    $message = "message";
    $objet = "Teest";
    
    $message .= "<br><br><br><a href=http://www.site.com/desabonnement.php?email=mail@mail.com>Cliquer ici pour se désabonner</a>";
    
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
    $headers .= "From: moi<mon_mail>\n";
    $headers .= "X-Sender: <mon_mail>\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "Return-Path: <mon_mail>\n";
    
    mail("mon_mail", $objet, $message, $headers);
    ?> 
    L'envoi s'est bien passé, et j'ai tout reçu.

    Conclusion : vérifie bien la récupération des valeurs dans tes variables php...
    0
  3. Jew
     
    ok merci pour ton aide je vais testé sa tout de suite..
    0
  4. Jew
     
    oui j'ai testé aussi et j'ai bien reçu.. Enfin c'est peut-être moi qui comprend pas..

    Voila la page précédente avec le formulaire qui contient le message du mail:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
    <html>
    <head>

    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>nw</title>

    </head>

    <body>

    <form method="post" action="envoixxx.php" name="newsletter"><b>Votre message en HTML ou en texte
    brut :<br>

    <textarea cols="40" rows="25" name="mess"></textarea><br>

    <input name="Submit" value="Envoyer" type="submit"></b></form>

    </body>
    </html>
    0
    1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
       
      Mais tu n'as rien du tout qui s'affiche dans le message ?

      Et en mettant $message = ($_POST['mess']); dans le while ? ...

      @+
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jew
     
    si dans le message il y a quand mm le liens><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";

    tu peu me dire comment tu mets $message = ($_POST['mess']); dans le while

    jsuis pas sure
    while($resultat = mysql_fetch_array($result), $message = ($_POST['mess']))

    merci
    0
    1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
       
      Ah oui nan, ce que je veux dire, c'est $message = ($_POST['mess']); dans ta boucle while (après l'accolade quoi).

      Mais avant ça, as-tu bien essayé de faire avec .=
               |
               V
      $message .= "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>"; 
      Ta valeur $_POST['mess'] est-elle bien récupérée ?

      @+
      0
      1. NEZA > dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention  
         
        bjr
        je suis stagiare jé du mal à m'on sortir de php
        mon titeur de stage ma demandé de faire un désabonement de emailing!!!
        auriez vs la gentillesse de m'aider a construire mon code ou a me corigé mon code
        codialement
        0
  7. Alain42
     
    Bonjour,

    pourquoi mets tu tout ça dans la boucle while

    <?php
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
    $headers .= "From: $nom_du_site <$votreemail>\n";
    $headers .= "X-Sender: <$votreemail>\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "Return-Path: <$votreemail>\n";
    $objet = "NewsLetter";
    
    include("parametres.php");
    $connexion = mysql_connect("$chemin_db" , "$login" , "$pass");
    $sql = "SELECT * FROM newsletter";
    $result = mysql_db_query($database , $sql , $connexion);
    $n=0
    while($resultat = mysql_fetch_array($result)){ 
    $message = ($_POST['mess']);
    $message .= "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";
    $env_mail=mail("$resultat[email]", $objet, "$message", $headers);
    if($env_mail){$n++} // si env ok on incremente le compteur
    }
    
    if($n>0){
    	echo "Newletter envoy&eacute;e a $n correspondants";
    }else{
    	echo "Newletter non envoy&eacute;e";
    }
    ?>
    
    0
    1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
       
      Oui, effectivement...

      Mettre l'include au début tout de même... J'imagine que $nom_du_site et $votreemail sont dans parametres.php.

      @+
      0
  8. Jew
     
    Bonjour,

    voila j'ai éssayé ce script mais le problème maintenant, c'est quand j'envoie sa me met sa:
    Parse error: syntax error, unexpected T_WHILE in /home/web/clients/jerew.org/www/envoixxx.php on line 16
    Que faire?

    <?php
    include("parametres.php");

    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
    $headers .= "From: $nom_du_site <$votreemail>\n";
    $headers .= "X-Sender: <$votreemail>\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "Return-Path: <$votreemail>\n";
    $objet = "NewsLetter";

    $connexion = mysql_connect("$chemin_db" , "$login" , "$pass");
    $sql = "SELECT * FROM newsletter";
    $result = mysql_db_query($database , $sql , $connexion);
    $n=0
    while($resultat = mysql_fetch_array($result)){
    $message = ($_POST['mess']);
    $message .= "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";
    $env_mail=mail("$resultat[email]", $objet, "$message", $headers);
    if($env_mail){$n++} // si env ok on incremente le compteur
    }

    if($n>0){
    echo "Newletter envoyée a $n correspondants";
    }else{
    echo "Newletter non envoyée";
    }
    ?>
    0
    1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
       
      Mets un ; après $n=0 ! ;-)
      0
  9. Alain42
     
    Pour le include, pas de pb tu peux le mettre au début, pourvu qu'il soit avant l'utilisation des variables qu'il initialise
    as tu bien remplacé les <$votreemail> par ton adresse mail sans les < > ?

    essayes comme ça:

    <?php
    include("parametres.php");
    
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
    $headers .= "From: $nom_du_site <$votreemail>\n";
    $headers .= "X-Sender: <$votreemail>\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "Return-Path: <$votreemail>\n";
    $objet = "NewsLetter";
    
    $connexion = mysql_connect("$chemin_db" , "$login" , "$pass");
    $sql = "SELECT * FROM newsletter";
    $result = mysql_db_query($database , $sql , $connexion);
    $n=0
    while($resultat = mysql_fetch_array($result)){
    	$message = $_POST['mess'];
    	$message .= "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";
    	$env_mail=mail($resultat[email], $objet, $message, $headers);
    	if($env_mail){// si env ok on incremente le compteur
    		$n++
    	} 
    }
    //partie que tu pourras enlever quand ça marchera, si tu veux ?
    if($n>0){
    echo "Newletter envoyée a $n correspondants";
    }else{
    echo "Newletter non envoyée";
    }
    ?>
    
    0
  10. Jew
     
    voila j'ai rééssayé et maintenant sa me met ..

    Parse error: syntax error, unexpected '}' in /home/web/clients/jew.org/www/envoixxx.php on line 20
    0
  11. Jew
     
    Je crois que e problème viens de cette line..

    if($env_mail){$n++} // si env ok on incremente le compteur
    0
  12. Jew
     
    voila sa marche, j'ai juste mi sa:

    <?php
    include("parametres.php");

    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
    $headers .= "From: $nom_du_site <$votreemail>\n";
    $headers .= "X-Sender: <$votreemail>\n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "Return-Path: <$votreemail>\n";
    $objet = "NewsLetter";

    $connexion = mysql_connect("$chemin_db" , "$login" , "$pass");
    $sql = "SELECT * FROM newsletter";
    $result = mysql_db_query($database , $sql , $connexion);
    $n=0;
    while($resultat = mysql_fetch_array($result)){
    $message = $_POST['mess'];
    $message .= "<br><br><br><a href=$site/desabonnement.php?email=$resultat[email]>Cliquer ici pour se désabonner</a>";
    $env_mail=mail($resultat[email], $objet, $message, $headers);
    }
    ?>

    Evidament j'ai pas l'echo et le nmbre d'envoi mais tant que sa fonctionne!

    Merci pour votre aide :)
    0
  13. Alain42
     
    Désolé, une petite faute de frappe, il manquait le ; après $n++

    // si env ok on incremente le compteur
    if($env_mail){
    		$n++;
    	} 
    


    Si tu veux essayer, tu le remet et tu auras le résultat de tes envois;
    0
  14. Jew
     
    rebonjour et bonne année!

    j'ai encore un petit problème avec cette newsletter.. ceci est le script de désinscription, alors voila, j'aimerais que lorque l'on tape par exmple l'url suivante:
    http://xxxxxxx.org/desabonnement.php?email=jere@web.com
    que l'adresse e-mail soit supprimé de ma base.

    <?
    include("parametres.php");
    $connexion = mysql_connect("$chemin_db" , "$login" , "$pass");
    mysql_select_db($database , $connexion);
    $sql = "DELETE FROM newsletter WHERE email='$email'";
    mysql_query($sql);
    mysql_close($connexion);
    ?>
    L'adresse e-mail <?echo $email?> a été supprimée.

    quelqu'un peu me dire l'erreur de ce script svp?
    0
    1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
       
      A la place de $email, utilise $_GET['email'] et mets un ; pour finir ton echo à la fin.
      $sql = "DELETE FROM newsletter WHERE email=" . $_GET['email']; 
      
      L'adresse e-mail <?php echo $_GET['email']; ?> a été supprimée. 

      De plus, il est préférable d'utiliser <?php ?> plutôt que <? ?>, la deuxième méthode n'étant plus celle utilisée par défaut dans les versions les plus récentes de php.

      @+
      0
  15. Jew
     
    ok merci .. sa fonctionne parfaitement :D

    a +
    0
    1. dcanl Messages postés 3004 Date d'inscription   Statut Contributeur Dernière intervention   470
       
      Pas d'quoi.

      Enjoy!
      0