Problème script php (newsletter)
Résolu
Jew
-
NEZA -
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!
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
-
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); ?>
@+ -
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... -
-
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> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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-
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 ?
@+
-
-
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ée a $n correspondants"; }else{ echo "Newletter non envoyée"; } ?> -
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";
}
?> -
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"; } ?> -
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 -
Je crois que e problème viens de cette line..
if($env_mail){$n++} // si env ok on incremente le compteur -
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 :) -
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; -
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?-
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.
@+
-
-