Besoin d'aide envoi fichier pièce jointe par mail

Petit nouveau ! | 6 Messages

08 oct. 2015, 11:18

Bonjour à tous :)

Etant designer, je suis une vraie brêle en php. En effet, sur ma page, j'aimerais donner à l'utilisateur la possibilité d'uploader des fichiers ainsi que de remplir un formulaire afin d'envoyer le tout en un seul mail.

J'ai réussi la partie concernant le formulaire à remplir cependant je ne comprends pas comment réaliser la partie upload.

J'ai pu comprendre qu'un fois le fichier uploadé, il est placé dans un dossier sur le serveur puis récupéré et envoyé. Cependant je ne sais absolument pas faire ça et les tutos ou aides sur internet sont pour moi très difficile a comprendre

Quelqu'un pourrait il m'aider à finaliser mon code car seul je ne me sent pas capable de le faire.

Mon formulaire :

Code : Tout sélectionner

<form method="post" action="../contact_us2.php" enctype="multipart/form-data"> <div class="col-sm-8 col-sm-offset-2"> <input class="input1" type="text" name="nom" placeholder="Nom / Prénom"> </div> <div class="col-sm-8 col-sm-offset-2 input2"> <div class="col-sm-6"> <input class="input1" type="text" name="ville" placeholder="Ville"> </div> <div class="col-sm-6"> <input class="input1" type="text" name="postal" placeholder="Code postal"> </div> </div> <div class="col-sm-8 col-sm-offset-2 input2"> <div class="col-sm-6"> <input class="input1" type="text" name="tel" placeholder="Téléphone"> </div> <div class="col-sm-6"> <input class="input1" type="text" name="mail" placeholder="E-mail"> </div> </div> <div class="col-sm-12 title"> <h2 class="doc">Document à envoyer</h2> </div> <div class="col-sm-5 col-sm-offset-1 file-upload1"> <h5>Carte d’identité (JPG, PNG ou PDF | max. 500Ko) :</h5> <div class="file-select"> <div class="file-select-button" id="fileName">Choisir un fichier</div> <div class="file-select-name" id="noFile1">Aucun fichier choisi...</div> <input type="file" name="chooseFile" id="chooseFile1"> </div> </div> <div class="col-sm-5 file-upload2"> <h5>Carte vitale (JPG, PNG ou PDF | max. 500Ko) :</h5> <div class="file-select"> <div class="file-select-button" id="fileName">Choisir un fichier</div> <div class="file-select-name" id="noFile2">Aucun fichier choisi...</div> <input type="file" name="chooseFile" id="chooseFile2"> </div> </div> <div class="col-sm-5 col-sm-offset-1 file-upload3"> <h5>Permis de conduire (JPG, PNG ou PDF | max. 500Ko) :</h5> <div class="file-select"> <div class="file-select-button" id="fileName">Choisir un fichier</div> <div class="file-select-name" id="noFile3">Aucun fichier choisi...</div> <input type="file" name="chooseFile" id="chooseFile3"> </div> </div> <div class="col-sm-5 file-upload4"> <h5>Justificatif de domicile (JPG, PNG ou PDF | max. 500Ko) :</h5> <div class="file-select"> <div class="file-select-button" id="fileName">Choisir un fichier</div> <div class="file-select-name" id="noFile4">Aucun fichier choisi...</div> <input type="file" name="chooseFile" id="chooseFile4"> </div> </div> <div class="col-sm-5 col-sm-offset-1 file-upload5"> <h5>RIB (JPG, PNG ou PDF | max. 500Ko) :</h5> <div class="file-select"> <div class="file-select-button" id="fileName">Choisir un fichier</div> <div class="file-select-name" id="noFile5">Aucun fichier choisi...</div> <input type="file" name="chooseFile" id="chooseFile5"> </div> </div> <div class="col-sm-5 file-upload6"> <h5>Curriculum vitae (JPG, PNG ou PDF | max. 500Ko) :</h5> <div class="file-select"> <div class="file-select-button" id="fileName">Choisir un fichier</div> <div class="file-select-name" id="noFile6">Aucun fichier choisi...</div> <input type="file" name="chooseFile" id="chooseFile6"> </div> </div> <div class="col-sm-12 submit"> <input class="btn" type="submit""> </div> </form>
Et mon code php actuel :

Code : Tout sélectionner

<?php $to = '[email protected]'; // Sujet $subject = 'Candidature'; // message $message = ' <html> <head> <title>Coordonées</title> </head> <body> <h1>Candidature de '. $_POST['nom'] .'</h1> <ul> <li>Ville : '. $_POST['ville'] .'</li> <li>Code postal : '. $_POST['postal'] .'</li> <li>Nom/prénom : '. $_POST['nom'] .'</li> <li>Numéro de téléphone : '. $_POST['tel'] .'</li> <li>E-mail : '. $_POST['mail'] .'</li> </ul> </body> </html> '; // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Envoi mail($to, $subject, $message, $headers); ?>
Je vous remercie grandement de l'aide que vous pourrez m'apporter :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 oct. 2015, 20:40

salut,

Je vois deux problèmes avec ton formulaire
- tu es limité en taille d'upload (8Mo par défaut). C'est important car tu donne la possibilité d'envoyer plein de fichier et donc tu as un possible problème la dessus
- tu as donnée le même nom a tout tes champs de type file du coup seul le dernier remplis sera utilisable.

J'ai un tuto ici : http://www.phpjungle.info/cours/10-comm ... -http.html

le principe est simple :
pour champs de type file nommée (par exemple) cni, tu auras un index cni dans le tableau $_FILES ($_FILES['cni']).
cet index contient un tableau avec le nom du fichier, l'emplacement temporaire du fichier, la taille et le type).
dans ton cas tu peu travailler directement sur le fichier pour l'ajouter en pièce jointe.

Je te conseille de commencer par faire l'upload d'un fichier et ensuite de compléter pour les autres champs.

Pour l'envoi de courriel je te conseil d'utiliser la librairie php mailer afin de te simplifier la vie et d'assurer au mieux l'arriver du courriel.
l'utilisation est simple et l'ajout de fichier devient trivial (à coté de ce que tu devrais faire pour l'envoi avec la fonction mail).
la documentation de la fonction mail propose un exemple de code avec un fichier attaché.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

12 oct. 2015, 10:12

Bonjour, je te remercie pour ton aide et je pense que je vais me diriger vers ta solution pour l'envoi de mail.
Cependant je ne trouve aucune documentation pour l'envoi de mail avec pièce jointe. Enfin mon réel problème reste la ligne ou on donne le chemin du fichier à envoyer.

Merci à toi :)