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 :

Envoyer un mail avec pièce jointe en PHP


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Points : 2
    Points
    2
    Par défaut Envoyer un mail avec pièce jointe en PHP
    Bonjour les développeurs,

    Quelqu'un peux m'aider a modifier ces codes ?

    Oft j'aimerais envoyé un mail avec pièce jointe depuis le formulaire,
    le message est bien envoyé mais la pièce a une taille de 4 ko et impossible de l'ouvrir.

    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
    91
    92
    93
    94
    95
    96
    97
    <?php
     
    error_reporting(E_ALL); ini_set("display_errors", 1); //Affichier l'erreur
     
        if (get_magic_quotes_gpc()){  
            $nom = stripslashes(htmlentities($_POST['nom']));
            $email_from = stripslashes(htmlentities($_POST['email']));
            $message = stripslashes(htmlentities($_POST['message']));
        }else{  
    	//Évitez les injections en cas de courrier HTML
            $nom = htmlentities($_POST['nom']);
            $email_from = htmlentities($_POST['email']); 
            $message = htmlentities($_POST['message']);
        }
     
     
        if(preg_match("#@(hotmail|live|msn).[a-z]{2,4}$#", $email_from))
        {
            $passage_ligne = "\n";
        }
        else
        {
            $passage_ligne = "\r\n";
        }
     
        $email_to = "moi@gmail.com"; //Recepteur
        $email_subject = "J'ai envoyé le document"; //Sujet
        $boundary = md5(rand()); // Clé de limite aléatoire
     
        function clean_string($string) {
            $bad = array("content-type","bcc:","to:","cc:","href");
            return str_replace($bad,"",$string);
        } 
     
        $headers = "From: \"".$nom."\"<".$email_from.">" . $passage_ligne; //Expéditeur
        $headers.= "Reply-to: \"".$nom."\" <".$email_from.">" . $passage_ligne; //Expéditeur
        $headers.= "MIME-Version: 1.0" . $passage_ligne; //MIME Version
        $headers.= 'Content-Type: multipart/mixed; boundary='.$boundary .' '. $passage_ligne; //Contenu (2 versions ex: text / plain et text / html)
     
        $email_message = '--' . $boundary . $passage_ligne; //
        $email_message .= "Content-Type: text/plain; charset=\"utf-8\"" . $passage_ligne; //Contenu type
        $email_message .= "Content-Transfer-Encoding: 8bit" . $passage_ligne; //Encoding
        $email_message .= $passage_ligne .clean_string($message). $passage_ligne; //Contenu
     
    	//Pièce Jointe
        if(isset($_FILES["fichier"]) &&  $_FILES['fichier']['name'] != ""){ // Vérifier si 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érifiez si ce n'est pas un fichier .htaccess
    			 if($type_fichier == "application/msword" 
                    || $type_fichier == "application/msword" 
    				|| $type_fichier == "application/rtf"
    				|| $type_fichier == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" 
    			    || $type_fichier == "application/pdf"){ // Type pièce
     
                    if ($taille_fichier <= 4000000) { // Taille supérieure à 4 Mo
                        $tabRemplacement = array("é"=>"e", "è"=>"e", "à"=>"a"); //Changing special characters
     
                        $handle = fopen($source, 'n'); //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 .= $passage_ligne . "--" . $boundary . $passage_ligne; // Deuxième ouverture des limites
                        $email_message .= 'Content-type:'.$type_fichier.';name="'.$nom_fichier.'"'."\n"; 
                        $email_message .='Content-Disposition: attachment; filename="'.$nom_fichier.'"'."\n"; // Informer qu'il y a une pièce jointe
                        $email_message .= 'Content-transfer-encoding:base64'."\n"; //Encodage
                        $email_message .= "\n"; //Blank line. IMPORTANT !
                        $email_message .= $encoded_content."\n"; //Pièce jointe
     
                    }else{
    					// Message d'erreur si la pièce jointe supérieure à 2 Mo
                        $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais celle ci était superieure à 4Mo.". $passage_ligne;
                    }
                }else{
     
                    // Message d'erreur si le type de contenu incorrect pour la pièce jointe
                    $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais elle n'était pas au bon format.". $passage_ligne;
                }
            }else{
     
                // Message d'erreur pour l'envoi d'un fichier .htaccess
                $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe .htaccess.". $passage_ligne;
            }
        }
     
        $email_message .= $passage_ligne . "--" . $boundary . "--" . $passage_ligne; // Fermeture des limites
     
        if(mail($email_to,$email_subject, $email_message, $headers)==true){  //Envoi de mail
     
            header('Location: local.html'); //Redirection
        }
     
    ?>
    Code HTML

    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
    <form action="mail.php" method="post" enctype="multipart/form-data">
     
    				<input type="text" name="nom" placeholder="Noms" style="border: 1px solid #e2e2e2; width: 49%; padding-top: 5px; padding-right: 10px; padding-left: 10px; padding-bottom: 5px" required/>
     
    				<input type="email" name="email" placeholder="E-mail" style="border: 1px solid #e2e2e2; width: 50.3%; padding-top: 5px; padding-right: 10px; padding-left: 10px; padding-bottom: 5px; color: black" required/>
     
    				<input type="text" maxlength="70" placeholder="Votre profil" style="border: 1px solid #e2e2e2; width: 100%; padding-top: 5px; padding-right: 10px; padding-left: 10px; padding-bottom: 5px" required name="poste" value=""> 
     
    				<textarea name="message" rows="2" cols="50" style="border: 1px solid #e2e2e2; width: 100%; padding-top: 5px; padding-right: 10px; padding-left: 10px; padding-bottom: 5px" placeholder="Un mot sur vous"></textarea>
     
    				<br/>
     
                    <input type="file" class="jqInputText inputText" id="fichier" name="fichier" required="true"> 
    				<br>
    				<small>Format autorisé : doc, rtf, docx, pdf | Taille max : 4.0 Mo</small>
     
                </div>
                <br>
                    <input type="submit" class="inputfile" value="Envoyer">
     
                </div>
    							</form>

    Merci d'avance pour votre assistance

  2. #2
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Bonjour,
    Utilise une librairie dédiée à cet effet ?

    https://github.com/swiftmailer/swiftmailer
    ou
    https://github.com/PHPMailer/PHPMailer
    par exemple.

Discussions similaires

  1. Flex - PHP - Envoyer un mail avec pièce jointe
    Par matoma16 dans le forum Flex
    Réponses: 0
    Dernier message: 29/05/2013, 13h19
  2. Comment envoyer un mail avec pièce jointe (BCB6)
    Par renesouley dans le forum C++Builder
    Réponses: 16
    Dernier message: 30/12/2006, 21h56
  3. Envoyer un mail avec pièce jointe
    Par anirose dans le forum VBA Access
    Réponses: 6
    Dernier message: 08/11/2006, 12h45
  4. Envoyer un mail avec pièce jointe (javascript)
    Par Dorra_26 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 21/07/2006, 08h31
  5. [C++/MFC]Envoyer un mail avec Pièce jointe
    Par cjacquel dans le forum MFC
    Réponses: 4
    Dernier message: 12/06/2006, 13h48

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