Formulaire d'envoi mail avec PJ [Résolu/Fermé]

Signaler
Messages postés
18
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
10 décembre 2013
-
Messages postés
18
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
10 décembre 2013
-
Bonjour,

Je suis en train créer un site Web pour ma société et je cherche à faire un formulaire de recrutement du type Nom Prénom etc ET envoi de CV et lettre de motivation.

Apres pas mal de recherche, j'ai trouvé la partie formulaire et envoi par email ou la partie upload d'un fichier depuis un formulaire mais pas une action commune aux 2 taches.

J'ai donc tenté ma chance avec ce tuto http://fr.openclassrooms.com/informatique/cours/e-mail-envoyer-un-e-mail-en-php/annexe-joindre-un-fichier
mais n'étant pas développer PHP il doit me manquer des choses.
Lorsque j'exécute ma page, j'ai les messages d'erreur :

Warning: fopen() [function.fopen]: Filename cannot be empty in /homez.614/groupeti/www/test/recrutement_envoi.php on line 34

Warning: fread() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 36

Warning: fclose() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 38

Warning: fopen() [function.fopen]: Filename cannot be empty in /homez.614/groupeti/www/test/recrutement_envoi.php on line 40

Warning: fread() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 41

Warning: fclose() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 43

Autant je les comprends autant je e sais pas les resoudre.

Pouvez-vous m'aider ?

Merci

Voici les fichiers php :

Le formulaire

    
<form method="POST" action="recrutement_envoi.php" enctype="multipart/form-data">
 <fieldset style="width:500px;">
  <table border="0">
  <legend>Vos coordonnées</legend>
   <p>
   <tbody>
    <tr>
     <td>Civilité :</td>
     <td>
      <input type="radio" id="civilite1" name="civilite" value="mademoiselle"></input><label for="civilite1">Mademoiselle</label>
      </br>
      <input type="radio" id="civilite2" name="civilite" value="madame"></input><label for="civilite2">Madame</label>
      </br>
      <input type="radio" id="civilite3" name="civilite" value="monsieur"></input><label for="civilite3">Monsieur</label>
     </td>
    </tr>
    <tr>
     <td style="width:100px;"><label for="nom">Nom :</label></td>
     <td><input type="text" id="nom" name="nom" tabindex="1" /></td>
    </tr>
    <tr>
     <td><label for="prenom">Prénom :</label></td>
     <td><input type="text" id="prenom" name="prenom" tabindex="2" /></td>
    </tr>
    
    <tr>
     <td><label for="email">Email :</label></td>
     <td><input type="text" id="email" name="email" tabindex="3" /></td>
    </tr>
    <tr>
     <td><label for="tel">Téléphone :</label></td>
     <td><input type="text" id="tel" name="tel" tabindex="4" /></td>
    </tr>       
   </tbody>
   </p>
  </table>
 </fieldset>
 <fieldset style="width:500px;">
  <table border="0">
   <tbody>
    <tr>
     <td><input type="hidden" name="MAX_FILE_SIZE" value="100000">CV : </td>
     <td><input type="file" name="filecv"></td>
    </tr>
    <tr><!-- On limite le fichier à 100Ko -->
     <td><input type="hidden" name="MAX_FILE_SIZE" value="100000">Lettre </br>de motivation :</td>
     <td><input type="file" name="filemotiv"></td>
    </tr>
   <tbody>
  </table>
 </fieldset>
 <div><input type="submit" name="envoi" value="Envoyer le formulaire" /></div>    
</form>   
 


Et l'envoi avec biensur mon adresse mail valide:

<?php
$mail = 'adressemail@moi'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
 $passage_ligne = "\r\n";
}
else
{
 $passage_ligne = "\n";
}
 $formcivilite = htmlentities($_POST['civilite']);
 $formnom  = htmlentities($_POST['nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
 $formprenom  = htmlentities($_POST['prenom']);
 $formemail  = htmlentities($_POST['email']);
 $formtel  = htmlentities($_POST['tel']);
 $formobjet  = htmlentities($_POST['objet']);
 $formmessage = htmlentities($_POST['message']);
 $formcv   = htmlentities($_POST['filecv']);
 $formletmotiv = htmlentities($_POST['filemotiv']);
 
 

//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>";
//==========
 
//=====Lecture et mise en forme de la pièce jointe.
//$fichier   = fopen("image.jpg", "r");
//$attachement = fread($fichier, filesize("image.jpg"));
//$attachement = chunk_split(base64_encode($attachement));
//fclose($fichier);

$fichiercv   = fopen($formcv, "r");
echo $fichiercv;
$attachementcv = fread($fichiercv, filesize("$formcv"));
$attachementcv = chunk_split(base64_encode($attachementcv));
fclose($fichiercv);

$fichiermotiv   = fopen($formcv, "r");
$attachementmotiv = fread($fichiermotiv, filesize("$formletmotiv"));
$attachementmotiv = chunk_split(base64_encode($attachementmotiv));
fclose($fichiermotiv);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Hey mon ami !";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"test\"<test@test.fr>".$passage_ligne;
$header.= "Reply-to: \"test\" <test@test.fr>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
 
//=====Ajout du message au format HTML.
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
 
//=====On ferme la boundary alternative.
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========
 
 
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
//=====Ajout de la pièce jointe.
$message.= "Content-Type: text/plain; name=\"cv.txt\"".$passage_ligne;
$message.= "Content-Type: text/plain; name=\"motiv.txt\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"cv.txt\"".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"motiv.txt\"".$passage_ligne;
$message.= $passage_ligne.$attachementcv.$attachementmotiv.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
?>



6 réponses

Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
121
Bonjour,
Ton fopen est en "r", lecture seul. Or le fichier n'est pas encore créer, donc il bloque, essaye plutôt avec w+
Messages postés
18
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
10 décembre 2013
1
Bonjour,

Alors j'ai un peu avancé.

J'arrive à envoyer mon mail mais avec une seule PJ :

$mail = 'monmail@a.moi'; // Déclaration de l'adresse de destination.
	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
	{
		$passage_ligne = "\r\n";
	}
	else
	{
		$passage_ligne = "\n";
	}
		$formcivilite	= htmlentities($_POST['civilite']);
		$formnom		= htmlentities($_POST['nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
		$formprenom		= htmlentities($_POST['prenom']);
		$formemail		= htmlentities($_POST['email']);
		$formtel		= htmlentities($_POST['tel']);
		$formobjet		= htmlentities($_POST['objet']);
		$formmessage	= htmlentities($_POST['message']);
		$formletmotiv 	= $_FILES['filemotiv']['tmp_name'];
		$formcv   		= $_FILES['filecv']['tmp_name'];
 
	//=====Déclaration des messages au format texte et au format HTML.
	$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
	$message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>";
	//=====Lecture et mise en forme de la pièce jointe.
	//$fichier   = fopen("image.jpg", "r");
	//$attachement = fread($fichier, filesize("image.jpg"));
	//$attachement = chunk_split(base64_encode($attachement));
	//fclose($fichier);
	$fichiermotiv   = fopen($formletmotiv, "r");
	$attachementmotiv = fread($fichiermotiv, filesize("$formletmotiv"));
	$attachementmotiv = chunk_split(base64_encode($attachementmotiv));
	fclose($fichiermotiv);
 
	$fichiercv   = fopen($formcv, "r");
	$attachementcv = fread($fichiercv, filesize("$formcv"));
	$attachementcv = chunk_split(base64_encode($attachementcv));
	fclose($fichiercv);
 
 
	//=====Création de la boundary.
	$boundary = "-----=".md5(rand());
	$boundary_alt = "-----=".md5(rand());
	//=====Définition du sujet.
	$sujet = "Hey mon ami !";
	//=====Création du header de l'e-mail.
	$header = "From: \"test\"<test@mail.fr>".$passage_ligne;
	$header.= "Reply-to: \"test\" <test@mail.fr>".$passage_ligne;
	$header.= "MIME-Version: 1.0".$passage_ligne;
	$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
	//=====Création du message.
	$message = $passage_ligne."--".$boundary.$passage_ligne;
	$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
	$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
	//=====Ajout du message au format texte.
	$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
	$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
	$message.= $passage_ligne.$message_txt.$passage_ligne;
	//==========
	$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
	//=====Ajout du message au format HTML.
	$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
	$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
	$message.= $passage_ligne.$message_html.$passage_ligne;
	//=====On ferme la boundary alternative.
	$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
	//==========
	$message.= $passage_ligne."--".$boundary.$passage_ligne;
	//=====Ajout de la pièce jointe.
	$message.= "Content-Type: text/plain; name=\"cv.txt\"".$passage_ligne;
	$message.= "Content-Type: text/plain; name=\"motiv.txt\"".$passage_ligne;
	$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
	$message.= "Content-Disposition: attachment; filename=\"cv.txt\"".$passage_ligne;
	$message.= "Content-Disposition: attachment; filename=\"motiv.txt\"".$passage_ligne;
	$message.= $passage_ligne.$attachementcv.$passage_ligne.$attachementmotiv.$passage_ligne;
	$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
	//=====Envoi de l'e-mail.
	mail($mail,$sujet,$message,$header);
 
 
?>
Messages postés
18
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
10 décembre 2013
1
De ce que j'ai compris d'une explication ici (https://www.developpez.net/forums/d1399016/php/langage/formulaire-d-envoi-mail-pj/#post7605577),le code ci dessous permet de télécharger le fichier

Enfin pas le télécharger mais de le lire et de creer la piece joint pour le mail :

$fichiermotiv   = fopen($formletmotiv, "r");
$attachementmotiv = fread($fichiermotiv, filesize("$formletmotiv"));
$attachementmotiv = chunk_split(base64_encode($attachementmotiv));
fclose($fichiermotiv);
 
$fichiercv   = fopen($formcv, "r");
$attachementcv = fread($fichiercv, filesize("$formcv"));
$attachementcv = chunk_split(base64_encode($attachementcv));
fclose($fichiercv);


Pour preuve que j'ai 1 mail avec la 1ère PJ mais pas la 2ème...

Merci en tous cas de tes remarques :)
Messages postés
18
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
10 décembre 2013
1
Yess ça marche !!!

Voici le code pour ceux que ça intéresse :

[code]
<?php
//recup des variable du formulaire// htmlentities() convertit des caractères "spéciaux" en équivalent HTML
$formcivilite	= htmlentities($_POST['civilite']);
$formnom		= htmlentities($_POST['nom']); 
$formprenom		= htmlentities($_POST['prenom']);
$formemail		= htmlentities($_POST['email']);
$formtel		= htmlentities($_POST['tel']);
$formcv   		= $_FILES['filecv']['tmp_name'];
$formletmotiv 	= $_FILES['filemotiv']['tmp_name'];

//var pour test champs
$extensions = array('.txt', '.doc', '.docx', '.odt', '.pdf');
$extensioncv = strrchr($_FILES['filecv']['name'], '.');
$extensionmotiv = strrchr($_FILES['filemotiv']['name'], '.');
$taillecv = filesize($_FILES['filecv']['tmp_name']);
$taillemotiv = filesize($_FILES['filemotiv']['tmp_name']);
$taille_maxi = 2000000; //max 2Mo
$champs_vide = 'Le champs est vide.';
$fichier_vide = 'Pas de fichier sélectionné.';
$fichier_erreur_ext = 'Le type de fichier </br>n\'est pas valide.';
$fichier_erreur_taille = 'Le fichier est trop volumineux';

//var pour test mail
$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_'{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
								// séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
								// séparés par des points
$domain . '{2,63}$/i';

//test si champ vide
if(empty($formcivilite))
{
	$vide_civilite = $champs_vide;
}
if (empty($formnom))
{
	$vide_nom = $champs_vide;
}
if (empty($formprenom))
{
	$vide_prenom = $champs_vide;
}
if (empty($formtel))
{
	$vide_tel = $champs_vide;
}
//test si champ mail vide PUIS format adresse mail
if (empty($formemail))
{
	$vide_mail = $champs_vide;
}
elseif(!preg_match($regex,$formemail))
{
	$erreur_adressemail = "($formemail) n'est pas une adresse email valide.";
}
//CV test si aucun fichier PUIS test extention PUIS la taille du fichier
if (empty($formcv))
{
	$vide_CV = $fichier_vide;
}
elseif(!in_array($extensioncv, $extensions))  //Si l'extension n'est pas dans le tableau
{
	 $erreur_extcv = $fichier_erreur_ext;
}
elseif($taillecv>$taille_maxi)
{
	 $erreur_taillecv = $fichier_erreur_taille;
}
//Motiv test si aucun fichier PUIS test extention PUIS la taille du fichier
if (empty($formletmotiv))
	{
		$vide_motiv = $fichier_vide;
	}
elseif(!in_array($extensionmotiv, $extensions))  //Si l'extension n'est pas dans le tableau
	{
		 $erreur_extmotiv = $fichier_erreur_ext;
	}
elseif($taillemotiv>$taille_maxi)
	{
		 $erreur_taillemotiv = $fichier_erreur_taille;
	}
//--------------------

//Test si toutes les variables d erreur sont vide pour envoyer le mail 
if((!isset($vide_civilite)) && (!isset($vide_nom)) && (!isset($vide_prenom)) && (!isset($vide_mail)) && (!isset($erreur_adressemail)) && (!isset($vide_tel)) && (!isset($vide_CV)) && (!isset($vide_motiv)) && (!isset($erreur_extcv)) && (!isset($erreur_extmotiv)) && (!isset($erreur_taillecv)) && (!isset($erreur_taillemotiv)))
{
$mail = 'monmail@moi.fr'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
//$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head><body><b>".$formcivilite." ".$formnom."</b> a envoyé une demande de candidature via le site Internet.</body>";
$message_html.= $passage_ligne;
$message_html.= "<body><br></br><b>Nom : </b>".$formcivilite." ".$formnom;
$message_html.= "<br></br><b>Prénom : </b>".$formprenom;
$message_html.= "<br></br><b>Adresse Email : </b>".$formemail;
$message_html.=	"<br></br><b>Téléphone : </b>".$formtel;
$message_html.= "<br></br><b>En PJ, vous trouverez le CV et la lettre de motivation.</b>";
$message_html.= "</body></html>";
$message_html = mb_convert_encoding($message_html,'HTML-ENTITIES','utf-8');
//=====Lecture et mise en forme de la pièce jointe.
//PJ1
$fichiermotiv   = fopen($formletmotiv, "r");
$attachementmotiv = fread($fichiermotiv, filesize("$formletmotiv"));
$attachementmotiv = chunk_split(base64_encode($attachementmotiv));
fclose($fichiermotiv);
//PJ2
$fichiercv   = fopen($formcv, "r");
$attachementcv = fread($fichiercv, filesize("$formcv"));
$attachementcv = chunk_split(base64_encode($attachementcv));
fclose($fichiercv);


//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//=====Définition du sujet.
$sujet = "Demande de recrutement";
//=====Création du header de l'e-mail.
$header = "From: \"test\"<test@mail.fr>".$passage_ligne;
$header.= "Reply-to: \"test\" <test@mail.fr>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format texte.
//$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
//$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
//$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format HTML.
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//=====On ferme la boundary alternative.
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//=====Ajout de la PJ1.
$message.= $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: text/plain; name=\"cv$extensioncv\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"cv$extensioncv\"".$passage_ligne;
$message.= $attachementcv.$passage_ligne;
$message.= "--".$boundary.$passage_ligne;
//Ajout de la PJ2
$message.= $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: text/plain; name=\"motiv$extensionmotiv\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"motiv$extensionmotiv\"".$passage_ligne;
$message.= $attachementmotiv.$passage_ligne;
$message.= "--".$boundary.$passage_ligne;
//----------------------------
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
 }
 else
 {
echo "Probleme";
echo $vide_civilite;
echo $vide_nom;
echo $vide_prenom;
echo $vide_tel;
echo $vide_mail;
echo $erreur_adressemail;
echo $vide_CV;
echo $erreur_extcv;
echo $erreur_taillecv;
echo $vide_motiv;
echo $erreur_extmotiv;
echo $erreur_taillemotiv;
 }[/code]
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
881
Bonsoir,

l'envoi de mail en php est fait depuis le serveur, il faut donc que le fichier joint soit sur le serveur au moment de l'envoi.

Tu as bien mis dans ton formulaire un input type file pour permettre au candidat de sélectionner le fichier dans son ordi, mais je ne vois pas dans ton code la partie qui upload le fichier de l'ordi vers le serveur.. partie qui devrait être juste avant la partie envoi du mail.
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
881
je réitère ma précédente remarque:

je ne vois nulle part dans ton code la partie php qui gère upload les deux fichiers LM et CV du micro de l'internaute vers le serveur
( c'est comme si tu demandait à La poste d'envoyer un colis que tu ne leur a pas encore apporté )

Ensuite regardes du côté de la classe PhpMailer

deux liens:
http://www.code-web.org/post/2007/11/20/27-l-envoit-d-e-mail-avec-php-c-est-simple-comme-phpmailer

https://www.dewep.net/realisations/envoyer-un-email-avec-phpmailer