6.Le langage PHP
6.22.Envoyer un mail
6.22.1.Introduction
Il existe de nombreuses bonnes raisons pour être amené à vouloir envoyer un N'email (:-)) via PHP: Email de confirmation d'inscription, Alerte webmaster lorsqu'un utilisateur propose un lien, ... D'où ce tutorial.
Malheureusement assez peu d'hébergeurs (gratuits) proposent cette fonctionalité et cela ce comprend aisement. En effet, il est si simple avec ce procédé d'envoyer des centaines d'emails à des adresses stockées en base de données que les hébergeurs sont soumis à 2 risques principaux: 1- Voir leurs resources systèmes diminuer fortement (au risque d'écrouler le serveur) 2- Etre accusé de faciliter le "spamming".
6.22.2.La fonction mail()
La fonction de base pour envoyer un courrier electronique est mail(). Dont la syntaxe est mail(<adresse du destinataire>,<titre du mail>,<corps du message>);
Ainsi pour envoyer un mail à testemail@toutestfacile.com (pensez à remplacer par votre propre adresse pour voir le résultat) dont le titre serait "test email 1" et le message "merci pour ton tutorial", cela donne le script suivant:
|
<?php
$destinataire = "testemail@toutestfacile.com"; echo "Ce script envoie un mail à $destinataire"; mail($destinataire, "test email 1", "merci pour ton tutorial"); ?> |
![]() |
|
6.22.3.Entête de mail
Avec l'exemple précédent, le destinataire du message recevra bien le message mais avec un entête indiquant une adresse email de l'expéditeur et une adresse email pour la réponse déterminée par le serveur. Or le serveur est susceptible de déterminer que l'adresse email de l'expéditeur est webmaster@monsite.com alors que l'adresse email de l'expéditeur (et de réponse) doit être l'adresse d'un responsable d'une section du site (ex: moi@monsite.com). Heureusement, il est possible de spécifier cette information de la façon suivante:
|
<?php
$destinataire = "testemail@toutestfacile.com"; $expediteur = "moi@monsite.com"; $reponse = $expediteur; echo "Ce script envoie un mail à $destinataire ". "en précisant que l'expediteur est $expediteur ". "et que la réponse doit être envoyée à $reponse"; mail($destinataire, "test email 1bis", "merci pour ton tutorial", "From: $expediteur\r\nReply-To: $reponse"); ?> |
Vous pouvez donc constater que la syntaxe complète de la fonction mail est mail(<adresse du destinataire>,<titre du mail>,<corps du message>,<entête>);
Il est évidemment possible d'indiquer des adresses différentes pour l'expéditeur (From) et la réponse (Reply-To)
6.22.4.Email au format HTML
Envoyer un email au format HTML est a peine plus compliqué, il suffit de le préciser dans l'entête du mail.
|
<?php
$destinataire = "testemail@toutestfacile.com"; $expediteur = "moi@monsite.com"; $reponse = $expediteur; echo "Ce script envoie un mail au format HTML à $destinataire"; $codehtml= "<html><body>" . "<h1>Test Email</h1>". "<b><u>Ceci est un document HTML</u></b><br>" . "Avec differentes tailles de caractères et ". "<font color=\"red\">couleurs</font>" . "</body></html>"; mail($destinataire, "Email au format HTML", $codehtml, "From: $expediteur\r\n". "Reply-To: $reponse\r\n". "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"); ?> |
Si les images ne sont pas jointes au mail (voir plus loin) les chemins des liens et images doivent être absolus (c.a.d. commencer par http://).


mail.php

