IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Envoie mail avec Pièce Jointe


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Points : 65
    Points
    65
    Par défaut Envoie mail avec Pièce Jointe
    Bonjour à tous,

    dans ma page php, je souhaiterai uploader un fichier qu'il soit de type pdf, doc, ou docx sans le mettre dans le serveur. Je l'ai mis dans une variable, mais le problème se pose lors de l'envoie.

    J'ai 2 erreurs :
    Warning: file_get_contents(Tps2.pdf) [function.file-get-contents]: failed to open stream: No such file or directory in

    filetype() [function.filetype]: Lstat failed for Tps2.pdf
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <html>
    <head>
    <title>Upload email puis envoie</title>
    </head>
     
    <body>
    <form method="POST" action="verifUpload.php" enctype="multipart/form-data">
         <!-- On limite le fichier à 100Ko -->
         <input type="hidden" name="MAX_FILE_SIZE" value="100000">
         Fichier : <input type="file" name="fichier"/>
         <input type="submit" name="envoyer" value="Envoyer le fichier">
    </form>
    <?php
    if(isset($_FILES["fichier"]["name"])	)
    {
        // repertoire où vont être placé les fichiers
      //  $content_dir = $_SERVER['DOCUMENT_ROOT'].'/upload_dir/';
     
        // ajouter ici les autres extensions autorisé
        $extensions_OK = array('pdf', 'doc', 'docx'); 
     
        // Le nom du fichier ne peux pas être vide
        if(empty($_FILES['fichier']['name'])){
            exit("Aucun fichier sélectionné.");
        }
     
    	echo $_FILES['fichier']['name'];
     
        // on test si le fichier est uploadé
        if( !is_uploaded_file($_FILES['fichier']['tmp_name']) ){
            exit("Le fichier n'a pas pu être uploadé.");
        }
     
     
        // récupération de l'extension du fichier
        $ext = strtolower( pathinfo($_FILES['fichier']['name'],  PATHINFO_EXTENSION) );
     
        // est ce que l'extension est valide ?
        if(!in_array($ext, $extensions_OK)) {
            exit("Le format de votre fichier n'est pas autorisé.");
        }
        // upload
    			$destinataire = "1234@hotmail.fr"; // Pour plusieurs destinataires, les séparer par une virgule
    			$expediteur = "4321@hotmail.fr";
    			$sujet = "Mail avec pièce jointe";
     
    			$delimiteur = md5(uniqid(rand())); // Création d'un numéro unique, qui délimitera les différents blocs du mail
     
    			//$piecejointe = "candidat.pdf"; // Déclaration du fichier à envoyer en tant que pièce jointe
    			$piecejointe =  $_FILES['fichier']['name'];;
    			$contenupiecejointe = file_get_contents($piecejointe); // Récupération du contenu du fichier
    			$contenupiecejointe = chunk_split(base64_encode($contenupiecejointe)); // Conversion du fichier : respect du format RFC 2045
    			$typepiecejointe = filetype($piecejointe); // Récupération du type du fichier
     
    			/*---- Déclaration de l'entête ----*/
    			$entete = "From: $expediteur \n";
    			$entete .= "Reply-to: $expediteur \n";
    			$entete .= "Cc: destinataire1@gmail.com \n";
    			$entete .= "Bcc: destinataire2@gmail.com \n";
    			$entete .= "X-Priority: 1 \n";
    			$entete .= "MIME-Version: 1.0 \n";
    			$entete .= "Content-Type: multipart/mixed; boundary=\"$delimiteur\" \n"; // Déclaration du type du mail et du délimiteur
    			$entete .= " \n";
    			 echo"<h1><center><b>Rien du tout !!!</b></center></h1>";
    			/*---- Déclaration du message ----*/
    			$message = "--$delimiteur \n"; // Séparation du bloc "entete" et du bloc "message" par notre délimiteur
    			$message .= "Content-Type: text/html; charset=\"iso-8859-1\" \n"; // Déclaration du type du message ainsi que la charte de codage
    			$message .= "Content-Transfer-Encoding:8bit\n"; // Déclaration du type de codage
    			$message .= "\n";
    			$message .= "<strong>Mon Texte Gras</strong><br />";
    			$message .= "<font color=\"#ff0000\">Mon Texte Rouge</font>";
    			$message .= "\n";
     
    			/*---- Insertion de la pièce jointe ----*/
    			$message .= "--$delimiteur \n"; // Séparation du bloc "message" et du bloc "pièce jointe" par notre délimiteur
    			$message .= "Content-Type: $typepiecejointe; name=\"$piecejointe\" \n"; // Déclaration du type et du nom de la pièce jointe
    			$message .= "Content-Transfer-Encoding: base64 \n"; // Déclaration du type de codage
    			$message .= "Content-Disposition: attachment; filename=\"$piecejointe\" \n"; // attachment = pièce jointe = fichier à sauvegarder
    			$message .= "\n";
    			$message .= $contenupiecejointe." \n"; // Insertion du fichier
    			$message .= "\n";
    			$message .= "--$delimiteur"; // Délimitation de la fin de la pièce jointe, et du mail
     
    			/*---- Envoi du mail ----*/
    			mail($destinataire, $sujet, $message, $entete);		
    }
    ?>
     
    </body>
    </html>

    Je vous remercie par avance.

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Ce fichier sera de toute façons sur le serveur, dans le répertoire temporaire.
    Tu peux éventuellement l'utiliser tel quel, sans le déplacer.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Membre du Club
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Points : 65
    Points
    65
    Par défaut
    Merci beaucoup pour la réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoie Mail avec pièce jointe
    Par Sh@m@n dans le forum SAP
    Réponses: 11
    Dernier message: 05/04/2012, 14h22
  2. Envoi mail avec pièce jointe sans confirmation
    Par grrimag dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2008, 14h23
  3. [VBA-E]envoi mail avec pièce jointe
    Par magictom42 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2007, 11h33
  4. Envoie mail avec pièce jointe
    Par Juniora dans le forum Access
    Réponses: 3
    Dernier message: 03/04/2006, 14h24
  5. [VB]Bp envoie mail avec piéce jointe
    Par jm1213 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/02/2006, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo