Pour envoyer un mail en PHP, il nous faut utiliser la fonction
mail()
qui retourne TRUE si le mail a été accepté pour
livraison, FALSE sinon.
Avant de pouvoir l'utiliser, nous devons vérifier les points suivants :
-
La fonction
mail()
est bien activée par l'hébergeur.
- Pour le vérifier, il suffit de regarder son phpinfo() : Le serveur SMTP est correctement configuré.
Pour configurer le serveur SMTP, il faut ouvrir le fichier
php.ini et rechercher la ligne :
Puis mettre la configuration suivante :
Nouvelle configuration |
smtp_port = 25 ;Valeur par défaut
SMTP = smtp.monfai.fr
sendmail_from = moi@monfai.fr ; Pas obligatoire
|
PS : sendmail_path est utilisé pour localiser le
programme d'envoi de mail par le serveur.
Attention : Si la directive sendmail_path
est définie sous windows, alors smtp, smtp_port
et sendmail_from seront ignorés et la commande spécifiée
sera exécutée.
Une fois ces points réalisés, nous pouvons enfin passer à
la construction du mail lui-même. Nous avons deux possibilités :
- L'envoi sous format texte
- L'envoi sous format HTML
Format texte
Mise en forme d'un mail sous format texte | <?php
$ destinataire = ' adresse@fai.com ' ;
$ expediteur = ' adresse@fai.com ' ;
$ copie = ' adresse@fai.com ' ;
$ copie_cachee = ' adresse@fai.com ' ;
$ objet = ' Test ' ;
$ headers = ' MIME-Version: 1.0 ' . " \n " ;
$ headers . = ' Reply-To: ' . $ expediteur . " \n " ;
$ headers . = ' From: "Nom_de_expediteur"< ' . $ expediteur . ' > ' . " \n " ;
$ headers . = ' Delivered-to: ' . $ destinataire . " \n " ;
$ headers . = ' Cc: ' . $ copie . " \n " ;
$ headers . = ' Bcc: ' . $ copie_cachee . " \n\n " ;
$ message = ' Un Bonjour de Developpez.com! ' ;
if (mail($ destinataire , $ objet , $ message , $ headers ))
{
echo ' Votre message a bien été envoyé ' ;
}
else
{
echo " Votre message n ' a pas pu être envoyé " ;
}
?>
|
Format HTML
Mise en forme d'un mail sous format HTML | <?php
$ destinataire = ' adresse@fai.com ' ;
$ expediteur = ' adresse@fai.com ' ;
$ copie = ' adresse@fai.com ' ;
$ copie_cachee = ' adresse@fai.com ' ;
$ objet = ' Test ' ;
$ headers = ' MIME-Version: 1.0 ' . " \n " ;
$ headers . = ' Content-type: text/html; charset=ISO-8859-1 ' . " \n " ;
$ headers . = ' Reply-To: ' . $ expediteur . " \n " ;
$ headers . = ' From: "Nom_de_expediteur"< ' . $ expediteur . ' > ' . " \n " ;
$ headers . = ' Delivered-to: ' . $ destinataire . " \n " ;
$ headers . = ' Cc: ' . $ copie . " \n " ;
$ headers . = ' Bcc: ' . $ copie_cachee . " \n\n " ;
$ message = ' <div style="width: 100%; text-align: center; font-weight: bold">Un Bonjour de Developpez.com !</div> ' ;
if (mail($ destinataire , $ objet , $ message , $ headers ))
{
echo ' Votre message a bien été envoyé ' ;
}
else
{
echo " Votre message n ' a pas pu être envoyé " ;
}
?>
|
Important : Afin de séparer les headers du
corps du message, nous devons obligatoirement rajouter la
chaîne "\r\n\r\n" à la fin de sa définition afin d'éviter
les injections de headers.
Attention : Il est important de noter que ce n'est
pas parce que le mail a été accepté pour livraison qu'il
arrivera à destination.
|