Il te faut 5 fichiers en supposant que tu as déjà un CSS.
mail.php
<?php
// Parametres de la base de données mysql
// à remplacer par les vôtres
define('DB_SERVER', 'localhost');
define('DB_SERVER_USERNAME', 'root');
define('DB_SERVER_PASSWORD', 'motdepasse');
define('DB_DATABASE', 'votre_base');
// Configuration des infos expéditeur de la newsletter
define('EXPEDITEUR_NOM', 'Newsletter de example.com');
define('EXPEDITEUR_EMAIL', 'webmaster@example.com');
// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD);
// sélection de la base de données
mysql_select_db(DB_DATABASE,$connect);
// Informations d'entête du mail:
$headers ="MIME-Version: 1.0\r\n";
$headers .='From: ' . EXPEDITEUR_NOM;
$headers .=' <' . EXPEDITEUR_EMAIL . ">\r\n";
$headers .='Reply-To: '. EXPEDITEUR_EMAIL ."\r\n";
$headers .='Content-Type: text/plain; ';
$headers .='charset="iso-8859-1"'."\r\n";
$headers .="Content-Transfer-Encoding: 8bit\r\n";
$headers .='X-Mailer:PHP/' . phpversion() . "\r\n";
// On ôte les slashes ajoutés par le passage en variable POST
$message = stripslashes($_POST['message']);
$sujet = stripslashes($_POST['sujet']);
// On ajoute un lien de desinscription en bas de chaque message
$message .= "\n\n\nVous recevez cet email car vous êtes
abonné à la newsletter de monsite.com. Si vous ne souhaitez
plus recevoir ce genre de message, vous pouvez utiliser le
lien suivant pour vous désabonner :
http://www.monsite.com/inscription.php, et utilisez
l'option se désabonner.";
// on selectionne tous les emails de la base de donnée
$req=mysql_query("SELECT email FROM newsletter");
// On envoi la lettre d'info à tous les emails
// Boucle while pour parcourir les enregistrements
// et envoi avec la fonction mail() placée dans la boucle...
while ($res = mysql_fetch_array($req))
{
// Les variables sujet et message sont récupérés
// via le formulaire d'envoi
$retval = mail($res['email'],$sujet,$message,$headers);
// On affiche un message OK ou ERREUR pour chaque email
echo 'Envoi à ' . $res['email'] . ' : ';
if ($retval) {
echo 'OK<br>';
} else {
echo 'ERREUR<br>';
}
}
// On ferme la connection
mysql_close();
?>
envoi.html
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Envoi de newsletter</title>
<link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>
<form method="post" action="mail.php">
<h1>Envoi d'une newsletter aux membres</h1>
<table width="445" class="encadre">
<tr>
<th>Sujet :</th>
<td>
<input type="text" name="sujet" size="44" />
</td>
</tr>
<tr>
<th>Message :</th>
<td>
<textarea name="message" rows="18" cols="42"></textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Envoyer la newsletter" />
</td>
<td>
<input type="reset" value="Réinitialiser" />
</td>
</tr>
</table>
</form>
</body>
</html>
formulaire.html
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Inscription à la newsletter</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<form method="post" action="inscription.php">
<h1>Inscription à la newsletter</h1>
<table width="500" border="0" class="encadre">
<tr>
<th>Adresse email : </th>
<td><input type="text" name="email" size="40" /></td>
</tr>
<tr>
<th>Nom : </th>
<td><input type="text" name="nom" size="40" /></td>
</tr>
<tr>
<th>Prénom : </th>
<td><input type="text" name="prenom" size="40" /></td>
</tr>
<tr>
<td> </td>
<td>
<input name="action" type="radio" value="abo"
checked="checked" />
S'abonner
<input type="radio" name="action" value="desabo" />
Se désabonner
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="valid" value="Valider" />
</td>
</tr>
</table>
</form>
</body>
</html>
inscription.php
<?php
// Parametres de la base de données mysql
// à remplacer par les vôtres
define('DB_SERVER', 'localhost');
define('DB_SERVER_USERNAME', 'root');
define('DB_SERVER_PASSWORD', 'motdepasse');
define('DB_DATABASE', 'votre_base');
// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD);
// sélection de la base de données
mysql_select_db(DB_DATABASE,$connect);
if (isset($_POST['action'])) $action=$_POST['action'];
// vérification du bouton radio coché
// si abonnement est coché, on insere les données dans la base
if ($action == "abo") {
// strtolower() pour inserer l'email en minuscule.
// addslashes() pour proteger les données pour mysql
$email=addslashes(strtolower($_POST['email']));
$nom=addslashes($_POST['nom']);
$prenom=addslashes($_POST['prenom']);
// insertion des infos dans la base pour l'inscription
$sql = "INSERT INTO newsletter
VALUES('','".$email."', '".$nom."' ,'".$prenom."')";
$req = mysql_query($sql);
// Enfin on affiche un message de confirmation
if ($req) {
$msg = "Votre abonnement à la newsletter ";
$msg .= "à bien été pris en compte";
} else {
$msg = "L'erreur suivante s'est produite : ";
$msg .= mysql_error();
$msg .= "<br><br>Veuillez contacter le ";
$msg .= "webmaster du site.";
}
echo $msg;
// sinon on efface dans la base pour la désinscription
} else if ($action == "desabo") {
$email=htmlentities(strtolower($_POST['email']));
$sql = "DELETE FROM newsletter WHERE email='".$email."'";
$req = mysql_query($sql);
// Enfin on affiche un message de confirmation
if ($req) {
$msg = "Vous n'êtes plus abonné à la newsletter.";
} else {
$msg = "L'erreur suivante s'est produite : ";
$msg .= mysql_error();
$msg .= "<br><br>Veuillez contacter le webmaster.";
}
echo $msg;
}
// fermeture de la connexion à la base de données
mysql_close();
?>
table.sql
CREATE TABLE newsletter(
id INT(11) NOT NULL auto_increment,
email VARCHAR(70),
nom VARCHAR (50) not null,
prenom VARCHAR (50) not null,
PRIMARY KEY(id)
) TYPE=InnoDB AUTO_INCREMENT=1 ;