Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Mails
        Que dois-je ajouter pour bénéficier du format HTML dans mon mail ?
        Comment envoyer un mail ?
        Comment obtenir un accusé de réception lors d'un envoi ?
        Comment vérifier si le format d'une adresse e-mail est valide ?



Que dois-je ajouter pour bénéficier du format HTML dans mon mail ?
auteur : Eric Berger
En utilisant la fonction mail(), il faut indiquer
Content-Type: text/html; charset="iso-8859-1"
comme quatrième argument de la fonction. Le quatrième argument sert à spécifier des headers supplémentaires.

lien : faq Comment envoyer un mail ?

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 :
Configuration actuelle
[mail function]
Puis mettre la configuration suivante :
Nouvelle configuration
; pour windows
smtp_port = 25 ;Valeur par défaut

; pour windows
SMTP = smtp.monfai.fr

; pour windows
sendmail_from = moi@monfai.fr ; Pas obligatoire

; pour unix.
;sendmail_path = /usr/sbin/sendmail ou /usr/lib/sendmail
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 :

  1. L'envoi sous format texte
  2. L'envoi sous format HTML
Format texte
Mise en forme d'un mail sous format texte
<?php
$destinataire = 'adresse@fai.com';
// Pour les champs $expediteur / $copie / $destinataire, séparer par une virgule s'il y a plusieurs adresses
$expediteur = 'adresse@fai.com';
$copie = 'adresse@fai.com';
$copie_cachee = 'adresse@fai.com';
$objet = 'Test'; // Objet du message
$headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
$headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
$headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
$headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
$headers .= 'Cc: '.$copie."\n"; // Copie Cc
$headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
$message = 'Un Bonjour de Developpez.com!';
if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
{
    echo 'Votre message a bien été envoyé ';
}
else // Non envoyé
{
    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';
// Pour les champs $expediteur / $copie / $destinataire, séparer par une virgule s'il y a plusieurs adresses
$expediteur = 'adresse@fai.com';
$copie = 'adresse@fai.com';
$copie_cachee = 'adresse@fai.com';
$objet = 'Test'; // Objet du message
$headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
$headers .= 'Content-type: text/html; charset=ISO-8859-1'."\n"; // l'en-tete Content-type pour le format HTML
$headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
$headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
$headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
$headers .= 'Cc: '.$copie."\n"; // Copie Cc
$headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
$message = '<div style="width: 100%; text-align: center; font-weight: bold">Un Bonjour de Developpez.com !</div>';
if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
{
    echo 'Votre message a bien été envoyé ';
}
else // Non envoyé
{
    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.


Comment obtenir un accusé de réception lors d'un envoi ?
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"; // adresse mail du destinataire
$sujet = "Sujet"; // sujet du mail
$message = "Ton destinataire a bien lu ton mail"; // message qui dira que le destinataire a bien lu votre mail
// maintenant, on crée l'en-tête du mail
$header = "From: mon@adressemail.com\r\n"; 
$header .= "Disposition-Notification-To:mon@adressemail.com"; // c'est ici que l'on ajoute la directive
mail ($destinataire, $sujet, $message, $header); // on envois le mail
?>

Comment vérifier si le format d'une adresse e-mail est valide ?
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 : fr Tutoriel : initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr 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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com