Intégrer une donnée mysql dans un mailing php

[Résolu]
Signaler
Messages postés
17
Date d'inscription
vendredi 9 mai 2008
Statut
Membre
Dernière intervention
30 décembre 2010
-
Messages postés
17
Date d'inscription
vendredi 9 mai 2008
Statut
Membre
Dernière intervention
30 décembre 2010
-
Bonjour à tous,
Je souhaite envoyer un mailing tout simple aux adhérents de mon asso. Les adresses mails sont enregistrées dans une base de données mysql et l'envoi du mailing se fait sous la forme d'un PHP.
Cela fonctionne très bien avec un texte standard, mais pour personnaliser le mailing j'aimerais intégrer le prénom des adhérents dans le corps du mail (les prénoms sont aussi stockés dans la base de données).

Voici le code de mon PHP :

$db = mysql_connect('xxx', 'xxxx', 'xxx');
mysql_select_db('xxx',$db);
$sql = 'SELECT * FROM xxx';
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

$headers ='From: "xxx"<xxx>'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

$message ='
<html>
<head>
<style type="text/css">
... je vous passe les détails ...
</style>
</head>

... ici le corps du mail dans lequel je voudrais intégrer le prénom ...

</html>';

while($row=mysql_fetch_array($req))
{
if(mail($row["email"], "sujet du mail", $message, $headers))
{
echo 'Le message a été envoyé à '.$row['email'].' ! ';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
}
?>

J'ai essayé plusieurs combinaisons mais sans succès...
Par avance merci beaucoup de votre aide !
Graig

2 réponses

Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Bonjour

Tu peux mettre des chaines temporaires dans $message que tu remplace ensuite pas les valeurs du nom et prénom de la personne :

$message ='
<html>
<head>
<style type="text/css">
... je vous passe les détails ...
</style>
</head>

@@@PRENOM@@@ @@@NOM@@@  ... ici le corps du mail dans lequel je voudrais intégrer le prénom ...

</html>';

while($row=mysql_fetch_array($req))
{
 $message = str_replace("@@@NOM@@@",$row['nom'],$message); 
$message = str_replace("@@@PRENOM@@@",$row['prenom'],$message); 
if(mail($row["email"], "sujet du mail", $message, $headers))
{
echo 'Le message a été envoyé à '.$row['email'].' ! ';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
}
?>



J'ai supposé que les champs dans ta base se nommé "nom" et "prenom".
Messages postés
17
Date d'inscription
vendredi 9 mai 2008
Statut
Membre
Dernière intervention
30 décembre 2010

Génial ! Je ne connaissais pas cette technique, ça marche parfaitement.
Mille merci et excellentes fêtes de fin d'année à tous.