| auteur : Eric Berger |
En utilisant la fonction mail(), il faut indiquer
comme quatrième argument de la fonction. Le quatrième argument sert à spécifier des headers supplémentaires.
|
lien : Comment envoyer un mail ?
|
| auteurs : Forum PHP, Linaa, Kerod |
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.
|
| auteur : Julien Plu |
Pour faire cela il suffit juste de rajouter une directive au header du mail qui est :
Disposition- Notification- To
|
Mais regardons ceci avec un petit exemple :
<?php
$ destinataire = " son @ adressemail . com " ;
$ sujet = " Sujet " ;
$ message = " Ton destinataire a bien lu ton mail " ;
$ header = " From : mon @ adressemail . com\r\n " ;
$ header . = " Disposition - Notification - To : mon @ adressemail . com " ;
mail ($ destinataire , $ sujet , $ message , $ header );
?>
|
|
| auteur : Julien Plu |
Voici une fonction qui vous permettra de vérifier si une adresse mail est syntaxiquement correcte (c'est le rôle de l'expression régulière) et aussi si le domaine du mail existe (c'est le rôle de la fonction PHP getmxrr) :
<?php
function verifMail ($ mail )
{
if (preg_match (' /^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i ' , $ mail ) ) {
return false ;
}
list ($ nom , $ domaine ) = explode (' @ ' , $ mail );
if (getmxrr ($ domaine , $ mxhosts )) {
return true ;
} else {
return false ;
}
}
?>
|
Une deuxième solution existe en utilisant depuis la version 5.2 de PHP ce que l'on appelle les filtres et pour notre problème le filtre qui nous intéresse est FILTER_VALIDATE_EMAIL :
function verifEmail ($ email ) {
if (filter_var ($ email , FILTER_VALIDATE_EMAIL) = = = false ) {
return false ;
} else {
return true ;
}
}
|
Cependant, l'usage des filtres est critiqué par certains ; voir à ce sujet la documentation.
|
lien : Tutoriel : initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : Tutoriel sur la validation d'adresse e-mail en PHP, par Alexandre Tranchant
|
Consultez les autres F.A.Q.
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2003
Developpez LLC. Tous droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|