mardi 23 août 2011

[PHP] Envoyez un mail

Un utilisateur s’inscrit sur votre site et vous souhaitez envoyer un mail de bienvenue à celui-ci ? Découvrez comment envoyer des mails à l’aide de PHP !

Avant de commencer…

Pour cela, assurez-vous que votre hébergeur autorise l’utilisation de la fonction mail(). En effet pendant un moment, Free n’autorisait pas l’utilisation de cette fonction.

Envoi d’un mail au format texte:

Voici un exemple d’utilisation de la fonction mail() pour envoyer des messages au format texte.
1
2
3
4
$destinataire = "moi@fai.fr";
$sujet = "Salut";
$message = "Ceci est un message de test";
mail($destinataire, $sujet, $message);

Utilisez les headers:

Par exemple si vous souhaitez indiquer l’expéditeur, l’adresse de réponse, les adresses en Cc ou Cci, etc.. mais également l’encodage de votre texte.
1
2
3
4
5
$headers ='From: "Nom Expediteur"<adresse@fai.fr>'."\n";
$headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";
$headers .='Cc: email1@fai.fr, email2@fai.fr'."\n";
$headers .='Bcc: email3@fai.fr, email4@fai.fr'."\n";
mail($destinataire, $sujet, $message, $headers);

En-têtes disponibles:

  • From: l’adresse de l’expéditeur
  • Reply-To: l’adresse de réponse (au cas où celle de l’expéditeur est différente)
  • Cc: copie du message aux adresses indiquées séparées par des ;
  • Bcc: copie caché du message aux adresses indiquées séparées par des ;
  • Content-Type: type MIME du mail et charset (jeu de caractères)
  • Content-Transfer-Encoding: Encodage du mail
  • X-Priority: Permet de définir le niveau de priorité du mail envoyé. Entre 1 et 5. Plus ce chiffre est faible, plus haute est la priorité.
  • Disposition-Notification-To: Permet de spécifier l’adresse mail de retour pour la confirmation de lecture.

Envoyez un mail au format HTML:

Il est également possible d’envoyer un mail au format HTML, ce qui vous permet de personnaliser votre texte, mettre des images et bien plus…
Veillez à ce que ces 2 lignes soient bien ajoutées dans vos headers.
1
2
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
A présent on peut définir un message HTML et l’envoyer:
1
2
$message ="<html><head><title>Un titre ici</title></head><body>Hello World!</body></html>";
mail($destinataire, $sujet, $message, $headers);

Petit conseil:

N’oubliez pas de vérifier si l’email a bien été envoyé. Pour cela, la fonction renvoi une valeur de type booléen (true/false) selon le cas.
1
2
3
4
5
6
7
8
if(mail($destinataire, $sujet, $message, $headers))
{
     echo 'Le message a été envoyé';
}
else
{
     echo 'Le message n\'a pu être envoyé';
}

Aucun commentaire:

Enregistrer un commentaire