Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zér0 > Les tutoriels > Non-Officiels > Site Web > PHP > Systèmes complets > Lecture du tutoriel

Créer une newsletter simplement

Auteur : Vinc14
Créé : le 18/03/2006 20:35:47
Modifié : le 10/04/2008 20:42:46
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Bonjour !
Dans ce tuto, je vais vous apprendre à créer un système de newsletter pour votre site. J'utiliserai MySQL pour la gestion des adresses mail (si vous utilisez un autre système n'oubliez pas d'adapter le code :) ).

Bonne lecture ! ;)
Sommaire du chapitre :

À savoir...

Avant tout, voici quelques informations qui sont bonnes à savoir :

Pour comprendre mon code, il vous faut connaître quelques bases de PHP, notamment les boucles et les requêtes SQL.

Eh bien on dirait que c'est tout ! Passons à la pratique...

Création du système de newsletter

J'espère que vous avez des membres sur votre site, car à qui allez-vous envoyer des nouvelles, sinon ? :p

Pour ceux qui veulent une belle mise en page, sachez qu'on peut aussi rédiger une newsletter en (x)HTML (à condition de rajouter quelques lignes en plus).

Dans un premier temps, nous allons voir comment créer un système de newsletter simple, et après, nous verrons comment faire pour pouvoir utiliser du (x)HTML dans les messages.

Une newsletter simple



Le code est simple :

Pour envoyer un mail, on utilise la fonction mail(). Elle prend plusieurs paramètres : le récepteur, le sujet, le message.
Code : PHP
1
2
3
<?php
mail('adresse', 'sujet', 'message');
?>


Passons à la création de la page (nous n'allons utiliser qu'une seule page).

Formulaire pour rédiger la newsletter


Dans mon exemple, vous remarquerez que je n'ai pas mis d'attribut "action" à la balise "form" car comme on va recharger la même page, ce n'est pas nécessaire (quand on ne met pas d'attribut "action" à une balise "form", la même page est rechargée).

Code : HTML
1
2
3
4
5
6
7
8
9
<form method="POST">
<p>
Sujet :<input type="text" name="sujet" /><br /><br />
 
Message<br />
<textarea rows="40" cols="40" name="message"></textarea>
<input type="submit" value="Envoyer" />
</p>
</form>


Envoi de la newsletter


Si vous avez suivi ce que j'ai dit en haut, ça ne devrait pas vous poser de problème.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php
 
// ça, vous avez l'habitude...
mysql_connect("serveur", "user", "pass");
mysql_select_db("bdd");
 
if(isset($_POST['sujet']) AND isset($_POST['message']))
{
    // on sélectionne les adresses mail des membres
    $retour = mysql_query('SELECT adresse_mail FROM membres');
    while ($donnees = mysql_fetch_array($retour))
    {
        mail($donnees['adresse_mail'], $_POST['sujet'], $_POST['message']);
    }
}
 
?>

Pensez à modifier le nom du champ "adresse_mail" dans la requête SELECT s'il ne s'appelle pas comme ça !


OK, c'est cool, ça marche ! Mais comment je fais si je veux mettre du (x)HTML dans mon message ?


On y va tout de suite ! :)

Une newsletter avec du xHTML dedans



C'est comme tout à l'heure, sauf qu'il va falloir rajouter quelques trucs...

Pour le message d'abord :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
// Message en HTML
     $message = '
     <html>
     <head>
 
     </head>
     <body>
' . $_POST['message'] . '
     </body>
     </html>
     ';
?>


Ensuite, il faut rajouter des en-têtes (je ne vous en ai pas parlé tout à l'heure car c'est un peu compliqué).

Code : PHP
1
2
3
4
5
<?php
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
     $headers  = 'MIME-Version: 1.0' . "\r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
?>


Puis il faut rajouter un paramètre à la fonction mail : les en-têtes.
Code : PHP
1
2
3
<?php
mail('adresse', 'sujet', 'message', 'en-têtes');
?>


Tous ces passages pas très attrayants pour nous donner ce code (c'est le code intégral de la page newsletter.php) :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
if(isset($_POST['sujet']) AND isset($_POST['message']))
{
     mysql_connect('serveur', 'user', 'pass'); // connexion à MySQL
     mysql_select_db('bdd');
     $message = '
     <html>
     <head>
 
     </head>
     <body>
' . $_POST['message'] . '
     </body>
     </html>
';
 
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 
    // on sélectionne les adresses mail des membres
    $retour = mysql_query('SELECT adresse_mail FROM membres'); 
    while ($donnees = mysql_fetch_array($retour))
    {
        mail($donnees['adresse_mail'], $_POST['sujet'], $message, $headers);
    }
    mysql_close(); // on ferme la connexion à MySQL
}
else // sinon, si l'on n'a pas posté de newsletter, on affiche le formulaire
{
?>
<form method="post">
<p>
Sujet :<input type="text" name="sujet" /><br /><br />
 
Message<br />
<textarea rows="40" cols="40" name="message"></textarea><br />
<input type="submit" value="Envoyer" />
</p>
</form>
 
<?php
}
?>


:-° Vous avez éventuellement adapté le code, et ça fonctionne ? Alors bravo, parce que ce n'est pas forcément ce qu'il y a de plus simple. ;)

Des idées de mail

Voilà, j'ai terminé mon boulot ! :D Je ne vais plus vous faire souffrir avec mes explications vaseuses !

Vous savez maintenant bien manier la fonction mail, normalement. Je vous propose des idées pour vous entraîner avec cette fonction :


Euh... C'est tout ce que j'ai comme idées.
Bonne chance !

J'espère que ce tuto vous a été utile, et surtout, n'abusez pas de la fonction mail() pour envoyer du spam ! :diable:

Au revoir ! ;)
Auteur : Vinc14
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 413 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0213s (0.0098s)