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 :
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 !!!
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);
}
?>