Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

Les emails en PHP

Le courrier électronique est devenu l’un des principaux moyens de communication dans les entreprises. La gestion des emails va permettre d’envoyer des lettres d’informations, de lancer des notifications (prévenir l’internaute des activités du site en tant que membre actif) ou encore de tenir informé les utilisateurs des mises à jour.

Pour le webmaster qui conçoit un site web, il peut mettre en place une page de contact pour permettre à l’internaute de poser des questions ou de déposer des avis.

Envoyer des emails

La gestion des envois d’emails en PHP est simple.On utilise la fonction mail() en lui passant en argumants :

  •  l’email du destinataire
  •  le sujet du courrier
  •  le texte du courrier
<?php
// envoi d'un email à webmaster@tutovisuel.com
mail("webmaster@tutovisuel.com", "Sujet", "Le message\nligne2");
?>

Pour revenir à la ligne dans le message de l’email, vous pouvez utiliser le code du retour chariot \n qui sera transformé en PHP comme un caractère de fin de ligne.

Envoyer un email à plusieurs destinataires

Pour envoyer un email à plusieurs personnes, il faut séparer les adresses des destinataires par des virgules dans le premier paramètre.

<?php
// on sépare les destinataires par une virgule
$Destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
 
mail($Destinataires, "Sujet", "Le message\nligne2");
?>

En-têtes d’email

Il est possible de redéfinir les l’en-têtes correspondant, pendant l’envoi d’un email en ajoutant un quatrième paramètre à la fonction email(). Cet argument comprend une chaîne de caractères qui sera rajoutée à la fin des en-têtes. Cela permet de rajouter des en-têtes supplémentaires.

L’en-têtes From définit l’expéditeur du message.

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// en-têtes expéditeur
$entetes = "From : expediteur@gmail.com\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

 Chaque directive d’en-têtes doit avoir le caractère de fin de ligne \n .

Adresse de retour

Pour changer l’adresse de retour on utilise la directive Reply-to. On ajoute cet en-têtes à celui déjà envoyé en utilisant l’opérateur de concaténation .=

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// en-têtes expéditeur
$entetes = "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

Personnes en copie

Il existe trois modes d’adressage : l’envoi à un destinataire défini, l’envoi d’une copie carbonne cc(Carbon Copy) et l’envoi d’une copie carbone en mode caché bbc ( Blind Carbon Copy).

Une copie désigne une personne a mettre au courant et le destinataire est tenu informé. La copie cachée permet de tenir une personne au courant sans que le destinataire en soit informé.

Pour ajouter des personnes de ce type on utilise les directives Cc et Bcc.

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// en-têtes expéditeur
$entetes = "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
// personnes en copie
$entetes .= "Cc : formateur@tutovisuel.com\n";
$entetes .= "Bcc : impots@tutovisuel.com\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

Priorité du message

Il existre trois niveaux de priorité via la directive X-Priority.

  •  5 (basse)
  •  3 (normale)
  •  1 (urgent)
<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// en-têtes expéditeur
$entetes = "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
// personnes en copie
$entetes .= "Cc : formateur@tutovisuel.com\n";
$entetes .= "Bcc : impots@tutovisuel.com\n";
 
// priorité urgente
$entetes .= "X-Priority : 1\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

Type de contenu et encodage

Le paramètre Content-Type spécifie le contenu du message. Par défaut, sa valeur est text/plain. Il s’agit du texte pur sans mise en forme. Les autres principaux types sont :

  •  image/jpeg, image/gif, image/png : formats d’images jpg, png et gif
  •  text/html : message au format HTML
  •  application/octet-stream : flux binaire opaque, valeur non textuel, inconnu

On peut aussi définir le jeu de caractères utilisé avec la directive charset qui s’ajoute à Content-Type séparé du reste par un point-virgule. Sa valeur peut être iso-88559-1 ou en utf-8.

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// en-têtes expéditeur
$entetes = "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
// personnes en copie
$entetes .= "Cc : formateur@tutovisuel.com\n";
$entetes .= "Bcc : impots@tutovisuel.com\n";
 
// priorité urgente
$entetes .= "X-Priority : 1\n";
 
// type de contenu et encodage
$entetes .= "Content-type: text/plain; charset=utf-8\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

Code de transportage

Pour lever les limites du protocole SMTP (messages limités à des données 7 bits, lignes limitées à 1000 caractères), vous pouvez utiliser la directive Content-Transfer-Encoding. Le message est codé lors de l’envoi, transféré, puis décodé par le client à la lecture. Le mécanisme est transparent pour l’utilisateur.

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// en-têtes expéditeur
$entetes = "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
// personnes en copie
$entetes .= "Cc : formateur@tutovisuel.com\n";
$entetes .= "Bcc : impots@tutovisuel.com\n";
 
// priorité urgente
$entetes .= "X-Priority : 1\n";
 
// type de contenu et encodage
$entetes .= "Content-type: text/plain; charset=utf-8\n";
 
// code de transportage
$entetes .= "Content-Transfer-Encoding: 8bit\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

Version MINE

La directive MINE-Version permet d’identifier la version MINE du navigateur. Sa valeur est en version 1.0.

 Cette directive doit être placée avant tous les autres.

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// Version MINE
$entetes = "MIME-Version: 1.0\n";
 
// en-têtes expéditeur
$entetes .= "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
// personnes en copie
$entetes .= "Cc : formateur@tutovisuel.com\n";
$entetes .= "Bcc : impots@tutovisuel.com\n";
 
// priorité urgente
$entetes .= "X-Priority : 1\n";
 
// type de contenu et encodage
$entetes .= "Content-type: text/plain; charset=utf-8\n";
 
// code de transportage
$entetes .= "Content-Transfer-Encoding: 8bit\n";
 
mail($destinataires, $sujet, "Le message\nligne2", $entetes);
?>

Email au format HTML

Pour envoyer un email au format HTML il faut donner la valeur text/html à la directive Content-Type.

 Si le message contient des images, elles doivent avoir des références absolues, hébergées sur le web.

<?php
$destinataires = "webmaster@tutovisuel.com, dupond@tutovisuel.com";
$sujet = "Bienvenue sur Tutovisuel";
 
// Version MINE
$entetes = "MIME-Version: 1.0\n";
 
// en-têtes expéditeur
$entetes .= "From : expediteur@gmail.com\n";
 
// en-têtes adresse de retour
$entetes .= "Reply-to : webmaster@tutovisuel.com\n";
 
// personnes en copie
$entetes .= "Cc : formateur@tutovisuel.com\n";
$entetes .= "Bcc : impots@tutovisuel.com\n";
 
// priorité urgente
$entetes .= "X-Priority : 1\n";
 
// type de contenu HTML
$entetes .= "Content-type: text/html; charset=utf-8\n";
 
// code de transportage
$entetes .= "Content-Transfer-Encoding: 8bit\n";
 
// message HTML
$message = '<h1> Titre </h1> <p> paragraphe contenant
une image : <img src="https://tutowebdesign.com/images/image.jpg" alt="" /> </p>'
 
mail($destinataires, $sujet, $message, $entetes);
?>

Si votre sujet est encodé en UTF-8, les accents risquent de ne pas s’afficher correctement sur le client de la messagerie.

Vous pouvez utiliser un schéma de codage qui vient de RFC 2047 et qui est utilisé seulement pour les en-têtes SMTP. Comme mentionné ci-dessus le schéma de codage pour le corps du message est spécifié dans le Content-Type.

Affichage

<?php
$sujet = '=?UTF-8?B?'.base64_encode($sujet).'?=';
?>

Créer un formulaire de contact

Vous souhaitez mettre en place un formulaire de contact pour permettre aux internautes de vous joindre. Voici ci-dessous un exemple de codes HTML et PHP pour un envoi d’email.

Code HTML du formulaire

<form action="" method="post">
    <label for="nom"> Nom : </label>
    <input type="text" placeholder="--" id="nom" name="nom">
    <label for="email"> Email : </label>
    <input type="text" placeholder="---@---.--" id="email" name="email">
    <label for="sujet"> Sujet : </label>
    <input type="text" placeholder="------" id="sujet" name="sujet">
    <label for="message"> Message : </label>
    <textarea id="message" name="message"></textarea>
    <input type="submit" id="envoi" name="envoi" value="ok">
</form>

Le code PHP

<?php
$sujet = '=?UTF-8?B?'.base64_encode($sujet).'?=';
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .='Content-Transfer-Encoding: 8bit'."\r\n" ;
$headers .= "From: $email" . "\r\n" . "Reply-To:$email" . "\r\n";
$message =  "Voici le méssage de $nom : <br>   $message ";
if(!mail("webmaster@tutovisuel.com", $sujet, $message, $headers)){
    echo "erreur";
}else{
    header("location:confirm.php");
}
?>

Il s’agit d’un exemple simple qui ne contient pas le script nécessaire au contrôle des champs du formulaire, ni le code CSS pour la présentation du formulaire de contact.

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »