PHP Envoyer E-mails

Une des utilisations principales d'un langage de script côté serveur est de fournir un moyen d'envoyer des e-mail à partir du serveur et, en particulier. Dans ce chapitre, je vais vous montrer comment faire pour envoyer des messages électroniques à l'aide de PHP.

PHP cours tutorial

Envoyer E-mails par code PHP


Le PHP vous permet d'envoyer des email directement par un code.
Cet article explique comment utiliser la fonction mail() de PHP pour créer et envoyer des mails.
La fonction mail() peut accepter un certain nombre de paramètres:
  1. to (string obligatoire)
  2. Sujet (string obligatoire)
  3. Message (string obligatoire) - à noter que chaque ligne doit se terminer par un retour à ligne ( \n ), et que la longueur des lignes est limité à 70 caractères.
  4. En-Têtes supplémentaires (facultatif)
    * À partir de
    * CC
    * BCC
    * Autres têtes
  5. Paramètres supplémentaires (facultatif)

La fonction PHP mail()

La fonction PHP mail() est employée pour envoyer des email par un code.

Syntaxe

mail(to,sujet,message,headers,parameters)



Ce qui signifie: mail(à, objet, message, en-têtes, paramètres)

Paramètre Description
to Requis. Spécifie le destinataire au quel on envoie l'email
sujet Requis. Spécifie le sujet de l'email. Note : Les caractères spéciaux (les lettres avec accents :é ê à etc. … ou les symboles : $ µ £ etc. …) ne sont pas autorisés
message Requis. Spécifie le message à envoyer. Chaque ligne doit se terminé par un retour à la ligne (\ n) et ne pas dépasser 70 caractères
headers Facultatif. Spécifie les en-têtes additionnels, comme de, le cc, et le Bcc. Les en-têtes additionnels devraient être séparés avec un (\ r \ n)
parameters Facultatif. Spécifie un paramètre additionnel au programme


Note : Pour que les fonctions de courrier soient disponibles, le PHP exige qu'un système d'email soit installé . Le programme à employer est défini par une configuration dans le fichier php.ini.

Email simple de PHP



La manière la plus simple d'envoyer un email avec le PHP est d'envoyer un email avec des textes.
Dans l'exemple qui suit il faut déclarer d'abord les variables (to, sujet, message, headers, parameters ), puis après avoir déclaré les variables nous les employons dans la fonction mail() pour envoyer un email :

Sélectionner le code


<?php
$to = "adresse@domaine1.com";
$sujet = "Test mail";
$message = "Bonjour, C’est un email teste.";
$from = "webmaster@domaine.com";
$headers = "De : $from";
mail($to,$sujet,$message,$headers);
echo "Mail envoyé .";
?>

 

Formulaire pour envoyer email



Avec le PHP, vous pouvez créer un formulaire sur votre site Web pour envoyer un email. L'exemple ci-dessous envoie un message textuel à un email spécifique :
Code page mailform.php:

Sélectionner le code


<html>
<body>

<?php
if (isset($_REQUEST['email']))
// si "email" est rempli, envoyez un courriel
{
//envoie email
$email = $_REQUEST['email'] ;
$sujet = $_REQUEST['sujet'] ;
$message = $_REQUEST['message'] ;
mail( "exemple@exemple.com", "sujet: $sujet",$message, "From: $email" );
echo "Merci pour utiliser notre email";
}
else
// si "email" n’est pas remplis, afficher le formulaire
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Objet : <input name='sujet' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>

</body>
</html>

 

Explication : Dans cet exemple:
D'abord, on contrôle si le champ de saisie d'email est remplit.
Si non on affiche le formulaire.
Si oui vous envoyez l'email .

PHP E-mails sécurité



Il y a une faiblesse dans le manuscrit d'email de PHP.
Le problème avec le code ci-dessus c’est qu’un utilisateur mal intentionné peut insérer un code dans les en-têtes du courrier par l'intermédiaire du formulaire de saisie.
Que se passe-t-il si l'utilisateur ajoute le texte suivant au champ d'entrée d'email dans le formulaire ?
exemple@exemple.com%0ACc : person2@exemple.com
%0ABcc : person3@exemple.com, person3@exemple.com,
anotherperson4@exemple.com, person5@exemple.com
%0ABTo : person6@exemple.com
La fonction mail() met le texte ci-dessus dans les en-têtes du courrier comme d'habitude, et maintenant l'en-tête a un cc supplémentaire : , Bcc : , et à : champ. Quand l'utilisateur clique sur le bouton de soumission, l'email sera envoyé à toutes les adresses ci-dessus !

PHP arrêt des injections d'email



Une manière d'arrêter des injections d'email est de valider l'entrée.
Le code ci-dessous est le même que dans le chapitre précédent, mais maintenant nous avons ajouté un Validateur d'entrée qui vérifie le champ d'email sous la forme :

Sélectionner le code


<html>
<body>
<?php
function spamcheck($field)
{
//filter_var() purifier email
//adresse utilise FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);

//filter_var() valider email
//adresse utilise FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}

if (isset($_REQUEST['email']))
{//if "email" is filled out, proceed

//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "Entrée invalide";
}
else
//envoie email
$email = $_REQUEST['email'] ;
$sujet = $_REQUEST['sujet'] ;
$message = $_REQUEST['message'] ;
mail( "exemple@exemple.com", "sujet: $sujet",$message, "From: $email" );
echo "Merci pour utiliser notre email";
}
else
// si "email" n’est pas remplis, afficher le formulaire
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Objet : <input name='sujet' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>

</body>
</html>

 

Dans le code ci-dessus nous utilisons des filtres de PHP pour valider l'entrée :
Le filtre FILTER_SANITIZE_EMAIL enlève tous les caractères illégaux d'email
Le filtre FILTER_VALIDATE_EMAIL valide la valeur de l'adress eemail
Vous pouvez lire plus au sujet des filtres dans notre chapitre filtre de PHP.
Mais la meilleur manière d’éviter cette injection d’Email est de ne jamais utiliser dans le formulaire la saisie de données(comme les noms ou les adresses électroniques) dans la section "En-têtes supplémentaires" de la fonction maill() de PHP, car cela peut conduire à un exploit d'en-tête de messagerie qui permet aux spammeurs de détourner vos formulaires électroniques. Par carabde 20 Aout 2014