HELP- formulaire d'envoi pdf par mail (NOOB inside)

Petit nouveau ! | 8 Messages

13 août 2015, 15:40

Bonjour/bonsoir

Je sais qu'il s'agit d'un sujet épuisé mais s'il vous plait, je suis le chef de tous les noobs et j'essaie pourtant d'assembler des bouts de code glanés ci et la.. mais alors pfiou.. quel micmac!

Je fais télécharger a mon visiteur un formulaire en pdf (une demande de devis qui s'appellera toujours "devis") Une fois rempli et enregistré sur son ordinateur, il l'upload.



Pour l'instant j'ai en HTML sur la page:

Code : Tout sélectionner

<form enctype="multipart/form-data" action="upload.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="400000" /> Fichier : <input name="uploadedfile" type="file" /> <input type="submit" name="envoyer" value="Envoyer le fichier"> </form>
et ma page upload.php:

Code : Tout sélectionner

<?php // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['uploadedfile']) AND $_FILES['uploadedfile']['error'] == 0) { // Testons si le fichier n'est pas trop gros if ($_FILES['uploadedfile']['size'] <= 2000000) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['uploadedfile']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('pdf'); $name = $infosfichier['filename']; $file = '' .time(). '' .$name. '.' .$extension_upload; if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker définitivement move_uploaded_file($_FILES['uploadedfile']['tmp_name'], 'uploads/' . $file); echo "<font color='green'>L'envoi de votre image bien été effectué !</font> <br />"; echo'<center><a href="http://www.do2.re"/>Retour au site</a></center>'; }else{ echo "<font color='red'>L'extension du fichier n'est pas autorisée. <br /></font>"; echo "<font color='red'>(Seul le fichier pdf que vous avez téléchargé est autorisé.)</font> "; } }else { echo "<font color='red'>Le fichier est trop volumineux.</font> <br />"; echo "<font color='red'>(Poids limité à 4Mo)</font>"; } }else { echo "<font color='red'>Veuillez selectionner un fichier.</font>"; } ?>

Avec ca je parviens a enregistrer le pdf uploaded dans le dossier "uploads" et si je dis pas de bêtise j'ai rajouté une ligne pour renommer automatiquement les nouveaux devis uploadés avec une suite de chiffre pour evitéer les conflits.

Maintenant ce que j'aimerais c'est que ces devis me soient envoyés par mail plutot que d'avoir a les consulter en les téléchargeant depuis ftp.

Quelles lignes ajouter à ce code, pour que au lieu de stocker les fichiers dans ce dossier "uploads" le script l'envoie directement à mon adresse mail?

Sachant que j'ai deja test la plupart des tutos qu'on trouve sur le web que ca fait 4 jours que je me démène la dessus (vous me direz que ca pourrait être utile d'apprendre le code plutot que d'essayer de bidouiller en vrac mais j'ai pas le temps hélas)


En vous remerciant d'avance pour votre temps : )

Mammouth du PHP | 2703 Messages

13 août 2015, 15:46


Eléphanteau du PHP | 42 Messages

13 août 2015, 16:47

or 1 a raison il vaut mieux par tranquilité utiliser PHPMAILER qui est le meilleur moyen d'envoyer des email avec PHP.

télécharge la class PHPMAILER : https://github.com/Synchro/PHPMailer

les seul fichier dont tu a besoin sont :
PHPMailerAutoload.php
class.phpmailer.php
class.pop3.php
class.smtp.php

tu peux mettre les 4 fichiers dans le même dossier que ton fichier d'upload de pdf.

rajoute en tête de upload.php :

Code : Tout sélectionner

require 'PHPMailerAutoload.php';
après ta ligne de code d'enregistrement du fichier upload.php sur le serveur qui succède à l'upload ajoute:

Code : Tout sélectionner

$mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->From = '[email protected]'; //email d'envoi (ceque tu veux) $mail->FromName = 'Mailer'; //nom de l'expéditeur ce que tu veux $mail->addAddress('[email protected]', 'Joe User'); // email du recepteur et son nom (il faut mettre ton email) $mail->addAttachment('uploads/' . $file); // le fichier pdf $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Here is the subject'; //sujet de l'email $mail->Body = 'This is the HTML message body <b>in bold!</b>'; //le contenu du message if(!$mail->send()) { echo 'Message could not be sent.'; //message d'erreur echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; //message de succès }

le tour est joué!

Petit nouveau ! | 8 Messages

13 août 2015, 17:43

MERCI!
J'apprécie beaucoup l'effort de clarté; tu pouvais pas être plus précis!

Merci beaucoup c'est parfait : )