Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Points particuliers > Envoyer un mail à vos membres exceptionnellement et automatiquement > Lecture du tutoriel

Envoyer un mail à vos membres exceptionnellement et automatiquement

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)
Avatar
Auteur : primmo
Note : 13 / 20 (5 votes)
Visualisations : 9 440

Plus d'informations Plus d'informations
Vous voulez envoyer un mail à tous vos membres pour une occasion particulière (Noël, jour de l'an, Halloween, résultat d'un concours, sortie d'un album, d'un livre, etc.). Je vais vous apprendre dans ce tutoriel à vous servir du site webcron pour faire un envoi automatique, et rapide. Il faudra rédiger dans un premier temps notre code puis ensuite s'inscrire et le soumettre à webcron.

Ce tutoriel vous permettra donc de savoir maîtriser le site webcron qui est très utile, ainsi que de revoir de nombreuses petites fonctions bien utiles en PHP. :)
Sommaire du tutoriel :
Icône du chapitre

Préparatifs

Rédigeant actuellement ce tuto en période de fêtes de fin d'année, je vous propose de prendre comme exemple l'envoi d'un e-mail à 23h59 le 24/12/06 pour souhaiter un Joyeux Noël à tous vos membres.

Un peu de culture



Il faut savoir tout d'abord que le site webcron n'est pas indispensable pour réaliser l'envoi de ce mail, il existe plusieurs manières de procéder.
La première est la méthode manuelle ; c'est très simple : à l'heure voulue, vous allez sur votre page pour exécuter le script. Le seul problème est que vous devez donc être là pour déclencher le script :( . Et je pense que le jour de Noël, vous avez d'autres choses à faire. Non ? :p

La deuxième méthode consiste donc à créer ce que l'on appelle un "cron".
Je vous entends déjà dire "mais qu'est-ce qu'il raconte, lui, là-bas derrière son écran, il parle chinois ? :D ".
Non, je ne parle pas chinois.

Voici la définition d'un cron, d'après Wikipédia.

Citation : Wikipédia
cron est le nom d'un programme qui permet aux utilisateurs des systèmes Unix d'exécuter automatiquement des logiciels (ou fichiers) à une date et une heure spécifiées à l'avance, ou selon un cycle défini à l'avance.

Je ne vous en dis pas plus sur le fait que le cron soit un daemon, ça n'a pas d'utilité dans ce tutoriel. Vous pouvez cependant lire l'article complet et intéressant à son sujet.

Le site webcron fait donc exactement la même chose, par internet.
L'avantage de le faire par le site est que grâce à cela, nous n'avons pas besoin d'avoir un serveur dédié pour utiliser les merveilleux crons.
Eh oui, malheureusement, je ne connais aucun hébergeur mutualisé qui accepte les crons, car cela entreprendrait une modification des fichiers du système.

Voilà : je pense que maintenant vous êtes prêts pour commencer, et vous savez où l'on va (enfin j'espère, car moi pas :p ).

Notre code

Nous allons donc dans cette sous-partie nous attarder sur le code nécessaire au bon fonctionnement du projet.

Il faut savoir que pour des raisons de sécurité, nous allons vérifier que nous sommes bien à la date et l'heure voulue. Sinon, des petits malins découvrant le fichier auraient vite fait de l'activer et vos membres auront tous reçu ce mail avant l'heure :-° .

Nous allons donc voir le code par étapes.

Code : PHP
1
2
<?php
$timestamp_noel = mktime(23? 00? 00? 12? 24? 2006);    // On initialise le timestamp lorsqu'il sera à noel?

J'utilise ici la fonction mktime pour pouvoir savoir le timestamp de Noël 2006.
Ici, j'ai choisi de prendre le 24 décembre 2006 à 23h00 et 00 sec. Je mets cette heure-ci car il n'est pas possible de choisir les minutes sur le site webcron. Eh oui, c'est moins précis que si vous le faisiez sur votre serveur dédié.

Notez que si vous souhaitez réutiliser votre script, vous pouvez mettre l'année dans une variable comme ceci :

Code : PHP
1
2
$annee = date('Y');
$timestamp_noel = mktime(23? 00? 00? 12? 24? $annee);


J'ai choisi juste après de définir nos variables message et sujet, contenant le message que vous allez envoyer à vos membres.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$message = '
     <html>
     <head>
 
     </head>
     <body>
<h1>Joyeux noël et très bonnes fêtes de fin d\'année</h1>
<p>Toute l\'équipe de [votre site] vous souhaite de très bonnes fêtes de fin d\'année, en espèrant un très bonne nouvelle année</p>
<p>Blabla blabla etc...</p>
     </body>
     </html>
';
$sujet = 'Joyeux noel';

Vous mettez ce que vous souhaitez dans votre code, pour annoncer d'éventuelles nouveautés, un concours ou autre chose.

Ensuite, nous allons nous attaquer aux headers ; c'est quelque chose d'obligatoire pour le bon envoi de votre mail. Je ne vous demanderai pas de comprendre ce morceau de code, sachez juste qu'il va permettre de régler le format de l'e-mail, pour que l'HTML soit autorisé et que les caractères s'y affichent normalement.

Code : PHP
1
2
$headers  = 'MIME?Version: 1.0' . "\r\n";
$headers .= 'Content?type: text/html; charset=iso?8859?1' . "\r\n";

Avant de passer au reste, il nous faut vérifier si la date actuelle est la même que celle précédemment évoquée.

Nous le faisons donc simplement grâce à un <police nom="courrier">if
.
Code : PHP
1
2
3
4
if(time() == $timestamp_noel) // Pour plus de sécurité? on compare le timestamp actuel à celui de Noël
{
//Notre code d'envoi d'e-mail
}


Nous passons maintenant au listage des e-mails de vos membres :

Code : PHP
1
2
3
mysql_connect("localhost"? "login"? "*****");
mysql_select_db("bdd");
$req = mysql_query("SELECT mail FROM membres");

Maintenant, il est simple d'envoyer notre message à chaque membre grâce à une boucle while.

Code : PHP
1
2
3
4
5
while($mail = mysql_fetch_array($req))
{
   mail($mail['mail']? $sujet? $message? $headers);
   echo 'Mail bien envoyé à '.$mail['mail'].'';
}

Voilà : à présent, votre script est prêt à fonctionner : juste pour le compléter, je vous propose un petit else.

Code : PHP
1
2
3
4
5
6
else
{
echo 'Désolé? c\'est pas le bon jour :p';
}
mysql_close();
?>


Allez : comme cadeau de Noël de ma part, je vous offre le code en entier.

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
<?php
$timestamp_noel = mktime(23? 59? 15? 12? 24? 2006);    // On initialise le timestamp qu'il sera à Noël
$message = '<html>
     <head>
 
     </head>
     <body>
<h1>Joyeux noël et très bonnes fêtes de fin d\'année</h1>
<p>Toute l\'équipe de Image?Studio vous souhaite de très bonnes fêtes de fin d\'année en espérant un très bonne nouvelle année</p>\n
<p>Pas mal de nouveautés sont à prévoir cette année sur le site, et nous vous rappelons que le site dispose d\'un forum communautaire pour partager vos passions</p>
     </body>
     </html>
';
$sujet = 'Joyeux noel';
$headers  = 'MIME?Version: 1.0' . "\r\n";
     $headers .= 'Content?type: text/html; charset=iso?8859?1' . "\r\n";
if(time() == $timestamp_noel) // Pour plus de sécurité? on compare le timestamp actuel à celui de Noël
{
 mysql_connect("localhost"? "login"? "******");
 mysql_select_db("bdd");
 $req = mysql_query("SELECT * FROM mail");
 while($mail = mysql_fetch_array($req))
 {
  mail($mail['mail']? $sujet? $message? $headers);
  echo 'Mail bien envoyé à '.$mail['mail'].'';
 }
}
else
{
  echo 'Désolé c\'est pas le bon jour :p';
}
mysql_close();
?>


Nous pouvons passer maintenant à la seconde partie.

Webcron Notre Sauveur

Eh oui ! Il ne manquait que lui pour conclure notre projet.
Alors tout d'abord, voici l'adresse du site Webcron.org

Image utilisateur
(cliquez sur l'image pour agrandir)

Je ne vous en refais pas de présentation. Inscrivez-vous, cette étape ne devrait pas poser trop de problèmes :p .
Une fois ceci réalisé, l'inscription confirmée, connectez-vous à votre compte.
Rendez-vous maintenant sur la page "mes tâches", et cliquez sur Nouvelle tâche. Vous devriez avoir la page suivante qui apparaît.

Image utilisateur

Remplissez le champ URL en mettant l'url du fichier d'envoi de mail.
Ensuite, ne remplissez pas login et mot de passe, renseignez l'heure, la date, le mois, le jour, etc.
Puis validez, vous devriez avoir l'image ci-dessous.

Image utilisateur

Et voilà : maintenant, tout est prêt pour que vos membres reçoivent un joli petit mail.
Vous pouvez maintenant modifier un peu le mail, en y ajoutant des couleurs, etc.

Voilà qui conclut mon premier tutoriel ; si vous avez des commentaires, surtout n'hésitez pas à laisser une note et un commentaire.

J'espère que cela vous aura permis de faire de bien joli petit code pour le plaisir de vos membres.
C'est dommage que l'envoi ne puisse se faire sur webcron à la minute près, mais bon ce n'est pas très grave.

Webcron propose aussi la fonction tester, qui permet de voir si tout est "ok" avant l'heure.

Merci à vous ! ;)
Retour en haut Retour en haut


Créé : le 19/12/2006 à 17:19:00
Modifié : le 22/08/2008 à 16:08:33
Avancement : 95%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | 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 606 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1535s (0.1424s)