personnaliser email avec str_replace

Répondre
papigato
le 16/10/2009 à 19:41
papigato
salut,
j'essye de personnaliser les emails envoyés avec des variables.
Par exemple, lorsque j'envois un message a mes membres, je souhaites inscrire dans le textarea:
salut %pseudo% tu t'es inscrit avec cette adresse : %mail%
alors j'ai decide de faire comme ca avec str_replace :
<?php 	if (empty($_POST['subject']) AND $_POST['body'])
{
echo 'Vous avez oublie un champ';
}
else
{

$adresse = mysql_query('SELECT *
FROM prospect
WHERE prospect_campagne_id = "'.$_SESSION['campid'].'"') or die (mysql_error());

$message = str_replace("mail", $donnees['prospect_email'], $message);
$message = str_replace("pseudo", $donnees['prospect_nom'], $message);

while($donnees = mysql_fetch_array($adresse))
{
$mail = "$donnees[prospect_email]";
$message = "$_POST[body]";
$sujet = "$_POST[subject]";
$headers .='From: '.$membre['membre_pseudo'].''."\n";
$headers .='Reply-To: '.$membre['membre_email'].''."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

//==========
mail($mail,$sujet,$message,$headers);
//==========


echo $donnees['prospect_email'] - ;
echo $donnees['prospect_nom'] - ;
echo "$_POST[subject] - ";
echo "$_POST[body]<br />";

}
} ?>


j a retourné dans tous les sens mais nada je vois pas comment faire pour bien personnaliser le corps du message
LA GLOBULE
le 16/10/2009 à 20:10
LA GLOBULE
Qu'est ce qui se passe ? Tu as une erreur ? Le mail n'arrive pas ? Le mail arrive alors que rien est remplacé ?

Moi, j'opterais pour la dernière proposition, et je dirais que c'est parce que tu écrases $message avec $_POST[body] après que tu aies fais tes str_replace.

D'ailleurs, ce body, je me demande si tu sais bien ce que tu as écris la.
Car en faisant $_POST[body], tu fais appel à une constante body que tu aurais défini, et en fait, ca irait chercher dans le tableau $_POST l'indice qui aurait la valeur de la constante body.

Or je pense tout simplement que tu souhaites récupérer l'indice body du tableau POST, donc utilise $_POST['body'].

Autres choses en vrac :
- il faut utiliser mysql_real_escape_string dans ta requete SQL
- il te faut virer tous les \r\n et les \n de $sujet et de $mail si tu veux eviter de créer une machine à spam
papigato
le 16/10/2009 à 20:16
papigato
alors les messages arrivent bien et je n'ai aucun message d'erreur .
le message arrive mais malheureusement rien n'est remplacé, ca arrive en brut
papigato
le 16/10/2009 à 21:05
papigato
bon voila ce que j'ai fait :
<?php 
$newsletter = mysql_real_escape_string($_POST['body']);
$titre = mysql_real_escape_string($_POST['subject']);

$adresse = mysql_query('SELECT *
FROM prospect
WHERE prospect_campagne_id = "'.$_SESSION['campid'].'"') or die (mysql_error());


$newsletter = str_replace("mail", "$adresse[prospect_email]", $newsletter);
$newsletter = str_replace("pseudo", "$adresse[prospect_nom]", $newsletter);




while($donnees = mysql_fetch_array($adresse))
{
$mail = "$donnees[prospect_email]";
$message = $newsletter;
$sujet = $titre;
$headers .='From: '.$membre['membre_pseudo'].''."\n";
$headers .='Reply-To: '.$membre['membre_email'].''."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

//==========
mail($mail,$sujet,$message,$headers);
//==========



}
} ?>



le message arrive bien mais la ou ca doit etre remplacé ca reste vide ...
et je ne vois pas comment faire pour les retours de ligne ...
LA GLOBULE
le 17/10/2009 à 11:59
LA GLOBULE
Je t'ai déjà répondu, mais tu as tout fait de travers :/

- Le str_replace, tu dans le faire dans le while
- tu ne dois pas utiliser $adresse[prospect_email] mais $adresse['prospect_email'] (pareil pour $adresse['prospect_nom'])
- le mysql_real_escape_string, tu ne dois pas le faire sur tes variables POST, mais sur les variables de la requete SQL
- il te faut supprimer les \r\n et les \n de $sujet, $mail voir de $membre['membre_pseudo'] et de $membre['membre_email']
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours