Envoi d'un mail avec pièces jointes en PHP
Posté : 03 déc. 2018, 15:32
Bonjour tout le monde,
Je suis un débutant en PHP et j'ai décidé de m'y lancer pour aider ma sœur qui se construit une entreprise et la programmation c'est pas son truc.
Du coup j'ai tenté de créer un formulaire qui récupère diverses informations à propos d'un utilisateur (nom, prénom, adresse, etc...).
Cependant lorsque je veux tester pour script, il ne fonctionne pas, il s'inscrit comme un vieux <p> dans ma feuille HTML, du coup je vous contacte pour savoir si vous pourriez me venir en aide, voici le code ci-joint pour faciliter la compréhension.
Merci d'avance et à très vite.
Je tiens à préciser que je me suis inspiré de ce TUTORIEL (le lien envoit vers un autre site, ceci n'est pas de la pub, ce sont juste mes sources).
Je suis un débutant en PHP et j'ai décidé de m'y lancer pour aider ma sœur qui se construit une entreprise et la programmation c'est pas son truc.
Du coup j'ai tenté de créer un formulaire qui récupère diverses informations à propos d'un utilisateur (nom, prénom, adresse, etc...).
Cependant lorsque je veux tester pour script, il ne fonctionne pas, il s'inscrit comme un vieux <p> dans ma feuille HTML, du coup je vous contacte pour savoir si vous pourriez me venir en aide, voici le code ci-joint pour faciliter la compréhension.
Merci d'avance et à très vite.
Je tiens à préciser que je me suis inspiré de ce TUTORIEL (le lien envoit vers un autre site, ceci n'est pas de la pub, ce sont juste mes sources).
<?php
function ajax() {
error_reporting(E_ALL);
ini_set('display_errors', 1);
$x = htmlentities($_POST['demande']);
if($x = "rens")
$demande = "Renseignement";
if($x = "devis")
$demande = "Devis pour une prestation";
if($x = "sign")
$demande = "Signalement";
if($x = "Autre")
$demande = $x;
$x = htmlentities($_POST['prestation']);
if ($x = "trad")
$prestation = "Traduction anglais-français";
if($x = "correc")
$prestation = "Relecture et correction";
if($x = "redac")
$prestation = "Rédaction de courriers et lettres de motivation";
if($x = "cours")
$prestation = "Cours particuliers d'anglais";
if($x = "Autre")
$prestation = $x;
$x = htmlentities($_POST['paiement']);
if ($x = "vir")
$paiement = "Virement bancaire";
if($x = "cheq")
$paiement = "Chèque bancaire";
if($x = "paypal")
$paiement = "PayPal";
if($x = "cesu")
$paiement = "CESU";
$sender = htmlentities($_POST['email']);
$numero = htmlentities($_POST['numero']);
$adresse = htmlentities($_POST['adresse']);
$ville = htmlentities($_POST['ville']);
$pays = htmlentities($_POST['pays']);
$message = htmlentities($_POST['message']);
//Verifie si le fournisseur prend en charge les r
if(preg_match("#@(hotmail|live|msn).[a-z]{2,4}$#", $sender)) {
$pl = "\n";
} else {
$pl = "\r\n";
}
$to = "[email protected]";
$objet = $nom . " " . $prenom . " - [" $demande . "][" . $prestation . "]";
$boundary = md5(rand());
$headers = "From: \"" . $nom . " " . $prenom . "\" <" . $sender . ">" . $pl;
$headers.= "Reply-to: \"" . $nom . " " . $prenom . "\" <" . $sender . ">" . $pl;
$headers.= "MIME-Version: 1.0" . $pl;
$headers.= "Content-Type: multipart/mixed; boundary=" . $boundary . " " . $pl;
$xmess = "Identite du demandeur: " . $nom . " " . $prenom . $pl;
$xmess.= "Numero de telephone: " . $numero . $pl;
$xmess.= "Adresse: " . $adresse . ", " . $ville . ", " . $pays . $pl;
$xmess.= "Contenu de la demande: " . clean_string($message) . $pl;
$email_message = "--" . $boundary . $pl;
$email_message.= "Content-Type: text/plain; charset=\"utf-8\"" . $pl;
$email_message.= "Content-Transfer-Encoding: 8bit" . $pl;
$email_message.= $pl . $xmess . $pl;
for($i = 1; $i < 3; $i++) {
$fichier = "att".$i;
if(isset($_FILES[$fichier]) && $_FILES[$fichier]['name'] != ""){ //Vérifie sur formulaire envoyé et que le fichier existe
$nom_fichier = $_FILES[$fichier]['name'];
$source = $_FILES[$fichier]['tmp_name'];
$type_fichier = $_FILES[$fichier]['type'];
$taille_fichier = $_FILES[$fichier]['size'];
if($nom_fichier != ".htaccess"){ //Vérifie que ce n'est pas un .htaccess
if($type_fichier == "image/jpeg"
|| $type_fichier == "image/pjpeg"
|| $type_fichier == "application/pdf"){ //Soit un jpeg soit un pdf
if ($taille_fichier <= 2097152) { //Taille supérieure à Mo (en octets)
$tabRemplacement = array("é"=>"e", "è"=>"e", "à"=>"a"); //Remplacement des caractères spéciaux
$handle = fopen($source, 'r'); //Ouverture du fichier
$content = fread($handle, $taille_fichier); //Lecture du fichier
$encoded_content = chunk_split(base64_encode($content)); //Encodage
$f = fclose($handle); //Fermeture du fichier
$email_message .= $pl . "--" . $boundary . $pl; //Deuxième séparateur d'ouverture
$email_message .= 'Content-type:'.$type_fichier.';name="'.$nom_fichier.'"'."n"; //Type de contenu (application/pdf ou image/jpeg)
$email_message .= 'Content-Disposition: attachment; filename="'.$nom_fichier.'"'."n"; //Précision de pièce jointe
$email_message .= 'Content-transfer-encoding:base64'."n"; //Encodage
$email_message .= "n"; //Ligne blanche. IMPORTANT !
$email_message .= $encoded_content."n"; //Pièce jointe
}else{
//Message d'erreur
$email_message .= $pl ."L'utilisateur a tenté de vous envoyer une pièce jointe mais celle ci était superieure à 2Mo.". $pl;
}
}else{
//Message d'erreur
$email_message .= $pl ."L'utilisateur a tenté de vous envoyer une pièce jointe mais elle n'était pas au bon format.". $pl;
}
}else{
//Message d'erreur
$email_message .= $pl ."L'utilisateur a tenté de vous envoyer une pièce jointe .htaccess.". $pl;
}
}
$email_message .= $pl . "--" . $boundary . "--" . $pl;
}
if(mail($to, $objet, $email_message, $headers)==true){
header('Location: contact.html');
}
}
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
?>