Problème script php (newsletter)

Résolu/Fermé
Jew - 31 déc. 2007 à 00:11
 NEZA - 3 mars 2010 à 02:26
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!
A voir également:

14 réponses

dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
31 déc. 2007 à 00:27
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
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
31 déc. 2007 à 00:43
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
ok merci pour ton aide je vais testé sa tout de suite..
0
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
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
31 déc. 2007 à 01:19
Mais tu n'as rien du tout qui s'affiche dans le message ?

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

@+
0

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
0
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
31 déc. 2007 à 10:51
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
NEZA > dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013
3 mars 2010 à 02:26
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
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
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
31 déc. 2007 à 11:44
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
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
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
31 déc. 2007 à 13:27
Mets un ; après $n=0 ! ;-)
0
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
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
Je crois que e problème viens de cette line..

if($env_mail){$n++} // si env ok on incremente le compteur
0
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
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
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
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
1 janv. 2008 à 04:27
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
ok merci .. sa fonctionne parfaitement :D

a +
0
dcanl Messages postés 3004 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
1 janv. 2008 à 13:06
Pas d'quoi.

Enjoy!
0