Créez votre site avec honolulu...
Apprendre le html
Cours de javascript
Apprendre les CSS

Apprendre le PHP : utiliser la fonction mail()  






Envoi de mail simple

Suite à de nombreuses demandes, vous trouverez un code minimal pour créer une page permettant aux internautes de vous envoyer un message autrement qu'en passant par le traditionnel logiciel de mail.

Ce code est volontairement minimaliste car l'objectif du site des langages à code ouvert est là pour vous aider à apprendre et comprendre...

Le code traditionnel utilisant un logiciel de messagerie est le suivant :

<html>
<body>
<form name="formu" action="mailto:ton@email" 
method="post" enctype="text/plain">
<textarea cols="30" rows="5" name="contenu"></textarea>
<input type="submit" value="valider">
</form>
</body>
</html>

A ce stade, 2 inconvénients majeurs :

  • la mise en forme à l'arrivée n'est pas réellement personnalisable,
  • votre adresse email est visible et accessible (y compris aux moteurs de recherche malintentionnés)

PHP vous permet de personnaliser vraiment la mise en forme du message reçu et, surtout, votre adresse email reste anonyme :

<?php
/* si register_globals off 
$texte=$_POST['texte'];
*/
if ($texte!="")
{
$entete="X-Priority:1\n";
$corps="Le message est le suivant :\n";
$corps.=" ".$texte."\n";
mail("mon@mail.com","Mon titre",$corps,$entete);
}
?>
<html>
<body>
<form name="formu" action="<?$PHP_SELF;?>" method="post">
<textarea name="texte"></textarea>
<input type="submit" value="valider">
</form>
</body>
</html>
Et c'est tout ! Essayez-le, vous verrez à quel point PHP est simple et accessible et surtout modulable !!!

Envoi de mail groupé (mode newsletter)

Le code est toujours aussi simple. La première étape consiste à récupérer l'ensemble des mails des destinataires dans un tableau puis à parcourir le tableau et enfin à envoyer le message pour chaque mail rencontré...

Ce qui donne :

<?php
$tableau=array("mail1@domaine.com","mail2@domaine.net",
"mail3@chez.net","mail4@chez.com","mail5@free.fr");
$message="Bonjour\n";
$message.="Vous allez bien ?\n";
$message.="A la prochaine, alors ;o)\n";
$entete="X-Priority:1\n";

for ($i=0;$i<count($tableau);$i++)
	{
	mail($tableau[$i],"Test envoi groupé",$message,$entete);
	}
?>

Ici le tableau est déjà en forme. Si vos adresses mail sont stockées dans une base de données, il suffit de les extraire et de les stocker aussi dans un tableau :

<?php
// connexion bdd

$requete="select adresse_mail from matable";
$id_result=mysql_query($requete,$id_connexion);

/* veiller à ne pas mettre le message dans 
 la boucle d'extraction de BDD ;o) */

$message="Bonjour\n";
$message.="Vous allez bien ?\n";
$message.="A la prochaine, alors ;o)\n";
$entete="X-Priority:1\n";

while ($tableau=mysql_fetch_array($id_result,MYSQL_ASSOC))
	{
mail($tableau['adresse_mail'],"Test envoi groupé",$message,$entete);
	}
?>