[RESOLU] Ne pas envoyer de pièce jointe en php

Avatar du membre
Eléphant du PHP | 224 Messages

29 juil. 2018, 01:22

Hellooooo !

J'utilise un script permettant aux visiteur d'un site , d'envoyer un mail via un formulaire de contact dans lequel il indique son nom, son adresse email, et son message.
Cela fonctionne comme il faut, mais le message est systématiquement accompagné d'une pièce jointe sans nom et qui est vide.

Pourtant, dans le code, j'ai commenté la partie pièce jointe.
Ci dessous, voici le code que j'utilise :

Code : Tout sélectionner

$nom_expediteur = $_POST['nom']; $mail_expediteur = $_POST['Mail']; $message_expediteur = $_POST['message']; $mail = '[email protected]'; // 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_txt = $message_expediteur; $message_html = "<html><head></head><body>$message_expediteur</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); //========== //=====Création de la boundary. $boundary = "-----=".md5(rand()); $boundary_alt = "-----=".md5(rand()); //========== //=====Définition du sujet. $sujet = "Mail de contact"; //========= //=====Création du header de l'e-mail. $header = "From: \"$nom_expediteur\"<$mail_expediteur>".$passage_ligne; $header.= "Reply-to: \"$nom_expediteur\" <$mail_expediteur>".$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-Type: text/plain; charset=\"UTF-8\"".$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-Type: text/html; charset=\"UTF-8\"".$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: image/jpeg; name=\"image.jpg\"".$passage_ligne; // $message.= "Content-Transfer-Encoding: base64".$passage_ligne; // $message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne; // $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; //========== //=====Envoi de l'e-mail. mail($mail,$sujet,$message,$header);
Comment puis-je faire pour que ca n'envoie pas de pièce jointe ?

Merki :)
Couin
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 août 2018, 22:54

Bonjour,
Mon conseil serait de reprendre un des exemples de la doc plutôt que de partir d'un exemple compliqué que tu n'arrives pas à adapter, surtout que ton besoin est assez simple :
https://php.net/mail
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphant du PHP | 224 Messages

14 août 2018, 01:46

Helloooo !

Merci pour ta réponse :)

J'ai repris et adapté depuis l'exemple, sans me faire ch... avec le mode html , donc juste du texte, ce qui est suffisant de toute façon pour le besoin présent, et c’est ok , plus de pièce jointe inexistante :P

Voici le code qui remplace toute la partie après le choix de "$passage_ligne" :

Code : Tout sélectionner

$sujet = "Mail de contact"; $header = "From: \"$nom_expediteur\"<$mail_expediteur>" . $passage_ligne; $header.= "Reply-to: \"$nom_expediteur\"<$mail_expediteur>" . $passage_ligne; $header.= 'X-Mailer: PHP/' . phpversion(); mail($mail, $sujet, $message_expediteur, $header);
A bientôt :)
Couin
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen: