Envoyer des mails en PHP
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Fonction mail syntaxe et paramètres
- 3.1- La syntaxe
- 3.2- Paramètre
$destinataire
- 3.3- Paramètre
$sujet
- 3.4- Paramètre
$message
- 3.5- Paramètre
$headers
- 3.6- Paramètre
parameters
- 4- Envoi d'e-mails HTML à l'aide de la fonction PHP mail ()
- 5- Exemple d'application
- 5.1.1- Sommaire du cours PHP
Envoyer des mails en PHP
-
Objectifs
- Utiliser la fonction php mail() pour envoyer des e-mail
-
Présentation
- Il existe deux méthodes de base pour envoyer des e-mails avec PHP: une fonction de messagerie intégrée et des paquets de messagerie externes.
- La fonction de messagerie intégrée de PHP () est très simple, mais elle fournit des fonctionnalités limitées pour l’envoi d’e-mails. Vous ne pourrez pas ajouter de pièces jointes à votre e-mail, et créer un beau modèle HTML avec des images intégrées sera également une tâche délicate.
- L’autre aspect de la fonction de messagerie PHP () est que l’e-mail est envoyé depuis votre serveur Web, ce qui peut entraîner des problèmes de délivrabilité en raison de problèmes de sécurité tels que la soupçon de spam et la mise en liste noire.
- La meilleure façon de surmonter ce problème est d’envoyer des messages via un serveur SMTP, mais cette fonctionnalité est également limitée.
- PHP
mail ()
ne vous permet généralement pas d’utiliser le serveur SMTP externe et ne prend pas en charge l’authentification SMTP. - PHP utilise la fonction
mail ()
pour envoyer un email. Cette fonction nécessite trois arguments obligatoires qui spécifient l’adresse e-mail du destinataire, le sujet du message et le message réel. En outre, il existe deux autres paramètres facultatifs. -
Fonction mail syntaxe et paramètres
-
La syntaxe
- Dès que la fonction de messagerie est appelée, PHP tentera d’envoyer le courrier électronique, puis il retournera vrai en cas de succès ou faux en cas d’échec.
- Plusieurs destinataires peuvent être spécifiés comme premier argument de la fonction mail () dans une liste séparée par des virgules.
-
Paramètre
$destinataire
- Obligatoire.
- Le paramètre $destinataire spécifie l’adresse du destinataire. Son format est standard et peut être représenté comme ceci:
-
Paramètre
$sujet
- Obligatoire.
- Le paramètre $sujet décrit l’objet du message. Il peut être laissé vide.
- Ce paramètre ne peut contenir aucun caractère de nouvelle ligne
-
Paramètre
$message
- Obligatoire.
- Le paramètre $message désigne le message à envoyer au(x) destinataire(s).
- Il peut être en format texte ou HTML. Les mails en format HTML peuvent avoir un contenu formaté à l’aide de balises HTML, des images ou des arrière-plan.
- Définit le message à envoyer. Chaque ligne doit être séparée par un LF (\ n). Les lignes ne doivent pas dépasser 70 caractères
-
Paramètre
$headers
- Optionnel.
- Le paramètre $headers est facultatif mais très utile.
- Il spécifie les informations supplémentaires qui seront envoyées avec le mail.
- Un entête respecte la forme propriété : valeur.
- Si plusieurs entêtes sont combinés alors il faut les séparer par \n.
- Voici la liste des headers les plus utilisés:
- From: désigne l’adresse de l’expéditeur.
- Cc: (pour Carbon Copy) désigne l’adresse qui recevra une copie du mail.
- Bcc: (pour Blind Carbon Copy) désigne l’adresse qui recevra une copie cachée du mail.
- Reply-To: spécifie l’adresse de réponse.
- Content-Type: spécifie l’encodage du mail. S’il n’est pas spécifié alors il s’agit d’un mail en format texte. Si on veut envoyer un mail en format HTML on peut alors spécifier l’encodage suivant: text/html; charset= »iso-8859-1″ ou text/html; charset= »utf-8″…
- X-Mailer: Nom du logiciel d’envoi du courrier.
- Date: Date de l’e-mail au format JJ MM AAAA h:m:s +0N00, dans laquelle N est le décalage horaire.
-
Paramètre
parameters
- Optionnel.
- Spécifie un paramètre supplémentaire pour le programme d’envoi de courrier
-
Envoi d’e-mails HTML à l’aide de la fonction PHP mail ()
- Le corps du message peut être écrit en HTML. Cependant, comme nous l’avons mentionné ci-dessus, cela devrait être simple. Dans la fonction de messagerie PHP (), la partie HTML ressemblera à ceci:
- Pour envoyer un courrier HTML, vous devez définir l’en-tête Content-type:
-
Exemple d’application
mail($destinataire , $sujet , $message , [$headers], [$parameters]);
$to = 'destinaire@gmail.com';
$subject = 'Sujet d'Email';
$message = '<html><body>Ceci est le corps du message électronique</body></html>';
$headers = implode("\r\n", [
'From: John Conde <webmaster@example.com>',
'Reply-To: webmaster@example.com',
'MIME-Version: 1.0',
'Content-Type: text/html; charset=ISO-8859-1',
'X-Mailer: PHP/' . PHP_VERSION
]);
$message = '
<html>
<head>
<title>Review Request Reminder</title>
</head>
<body>
<p>Here are the cases requiring your review in December:</p>
<table>
<tr>
<th>Case title</th><th>Category</th><th>Status</th><th>Due date</th>
</tr>
<tr>
<td>Case 1</td><td>Development</td><td>pending</td><td>Dec-20</td>
</tr>
<tr>
<td>Case 1</td><td>DevOps</td><td>pending</td><td>Dec-21</td>
</tr>
</table>
</body>
</html>
';
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
<?php
$dest="contact@chiny.me";
$objet="Rendez-vous";
$message="
<font face='arial'>
Bonjour\n
Prière de se retrouver sur Skype à <b>18h</b> aujourd'hui.\n
Merci et bonne journée.
</font>
";
$entetes="From: sc@example.com\n";
$entetes.="Cc: chiny@example.com\n";
$entetes.="Content-Type: text/html; charset=iso-8859-1";
if(mail($dest,$objet,$message,$entetes))
echo "Mail envoyé avec succès.";
else
echo "Un problème est survenu.";
exit;
?>