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 :

Envoi de pièce jointe par mail qui arrive vide


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut Envoi de pièce jointe par mail qui arrive vide
    Bonjour,

    tout est dans le titre et je suis désespéré.En effet lorsque je teste mon code, le mail contient bien la pièce jointe mais elle fait 0ko, vide donc.
    merci de ne pas me faire de commentaire sur la fonction securise qui sert à rien mais ce n'est pas elle le problème.

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    <?php
     
    //Sécurisation des données
     
    $uploads_dir = 'upload';
     
    function securise($texte){
    	return strip_tags($texte);
    }
     
    // Test de l'extension du fichier téléchargé
     
    function bonne_extension($path){
    	$path_parts = pathinfo($path);
    	$extension = $path_parts['extension'];
    	if($extension == 'png' || $extension == 'docx')
    	{
    		return $extension;
    	}
    	return false;
    }
     
    //Envoi des données du formulaire
     
    if(isset($_POST["nom"]) and isset($_POST["prenom"]) and isset($_POST["experience"])  and isset($_POST["email"]) and isset($_POST["message"]) and !empty($_POST["nom"]) and !empty($_POST["prenom"]) and !empty($_POST["experience"]) and !empty($_POST["email"]) and !empty($_POST["message"])){
     
          //Télechargement du cv et de la lettre de motivation
     
          $taille_max    = 2000000;
          $taille_fichier_cv = filesize($_FILES['cv']['tmp_name']);
          $taille_fichier_lettre = filesize($_FILES['lettre']['tmp_name']);
     
          if ($taille_fichier_cv > $taille_max){
     
           header('Location:formulaire.php?message=cv&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&adresse='.$_POST['adresse'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&reference='.$_POST['reference']);
    	     exit();
     
          }
     
         if ($taille_fichier_lettre > $taille_max){
     
           header('Location:formulaire.php?message=lettre&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&adresse='.$_POST['adresse'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&reference='.$_POST['reference']);
    	     exit();
     
          }
     
         if ($_FILES["cv"]["error"] == UPLOAD_ERR_OK) {
     
        	if(bonne_extension($_FILES["cv"]["name"])){
        		$tmp_name = $_FILES["cv"]["tmp_name"];
            $name = $_FILES["cv"]["name"];
            $nouveauNomFichier = uniqid('',true).'.'.bonne_extension($_FILES["cv"]["name"]);
            move_uploaded_file($tmp_name, "$uploads_dir/".$nouveauNomFichier);
     
        	}else{
     
            header('Location:formulaire.php?message=uploadcv&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&adresse='.$_POST['adresse'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&reference='.$_POST['reference']);
            exit();
     
        	}
          }
     
          if ($_FILES["lettre"]["error"] == UPLOAD_ERR_OK) {
     
        	if(bonne_extension($_FILES["lettre"]["name"])){
        		$tmp_name = $_FILES["lettre"]["tmp_name"];
            $name = $_FILES["lettre"]["name"];
            $nouveauNomFichier = uniqid('',true).'.'.bonne_extension($_FILES["lettre"]["name"]);
            move_uploaded_file($tmp_name, "$uploads_dir/".$nouveauNomFichier);
     
        	}else{
     
              header('Location:formulaire.php?message=uploadlettre&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&adresse='.$_POST['adresse'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&reference='.$_POST['reference']);
              exit();
     
        	}
          }
     
          // Lecture et mise en forme de la pièce jointe
          $file_type = filetype("$uploads_dir/".$nouveauNomFichier);
          $fichier   = fopen("$uploads_dir/".$nouveauNomFichier, "r");   
          $attachement = fread($fichier, filesize("$uploads_dir/".$nouveauNomFichier)); 
          $attachement = chunk_split(base64_encode($attachement));
          fclose($fichier); 
     
     
         // Vérification de l'e-mail
     
         if(!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){
    		   header('Location: formulaire.php?message=email&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&adresse='.$_POST['adresse'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&message='.$_POST['message'].'&reference='.$_POST['reference']);
    		   exit();
    	   }
     
     
    	   $nom = securise(utf8_decode($_POST['nom']));
    	   $prenom = securise(utf8_decode($_POST['prenom']));
    	   $adresse = securise($_POST['adresse']);
    	   $email = securise($_POST['email']);
    	   $message = securise($_POST['message']);
     
         $message = "Adresse: ".$adresse."\n"."Voici son message:"."\n".$message."\n";
     
         if(!empty($_POST["telephone"])){
     
            $telephone = securise($_POST['telephone']);
     
     
            if(!is_numeric($_POST["telephone"])){
     
             	header('Location:formulaire.php?message=telephone&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&adresse='.$_POST['adresse'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&message='.$_POST['message'].'&reference='.$_POST['reference']);
    		    exit();
            }
     
            $message .= "Son numéro de téléphone est: ".$telephone;
            $message  = utf8_decode($message);
     
          } 
          $boundary = md5(uniqid(microtime(), TRUE));
     
            $headers = 'From:'.$prenom.''.$nom.' <'.$email.'>'."\r\n";
    				$headers .='Reply-To:'.$email. "\r\n";
            $headers .=  'MIME-Version: 1.0'."\r\n";
            $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
            $headers .= "\r\n";
     
              $message .= '--'.$boundary."\r\n";
              $message .= "Content-Type:".$file_type."; name=".$nouveauNomFichier.""."\r\n";
              $message .= "Content-Transfer-Encoding: base64"."\r\n";
              $message .= "Content-Disposition: attachment; filename=".$nouveauNomFichier.""."\r\n";
              $message .= $attachement."\r\n";
              $message .= '--'.$boundary."\r\n";
     
              mail('pascal.duprat@hotmail.fr','', $message, $headers);
              header('Location: formulaire.php?message=ok&reference='.$_POST['reference']);
     
    }else{
     
    	header('Location:formulaire.php?message=erreur&nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'&experience='.$_POST['experience'].'&telephone='.$_POST['telephone'].'&email='.$_POST['email'].'&message='.$_POST['message'].'&reference='.$_POST['reference']);
    	exit();
    }
     
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    OK, on n'en parle pas.

    1/ Par contre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST["nom"]) and isset($_POST["prenom"]) and isset($_POST["experience"])  and isset($_POST["email"]) and isset($_POST["message"]) and !empty($_POST["nom"]) and !empty($_POST["prenom"]) and !empty($_POST["experience"]) and !empty($_POST["email"]) and !empty($_POST["message"])){
    la moitié des conditions sont elles aussi inutiles... mais ce n'est pas là non plus le problème.

    2/ $uploads_dir/".$nouveauNomFichier : le fichier est-il bien enregistré physiquement dans le dossier ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    le fichier va bien dans le dossier oui mais c'est le fichier attaché au mail qui fait 0ko..

  4. #4
    Invité
    Invité(e)
    Par défaut
    As-tu essayé PHPMailer ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    non merci.
    Mon pb reste entier.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    ok pour phpmailer seulement problème on parle d'authentification smtp et je ne sais pas ce que c'est,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ..$mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.live.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'pascal.duprat@hotmail.fr';                 // SMTP username
    $mail->Password = 'motdepasse';                           // SMTP password
    $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 25; 
    ...
    j'ai donc mis en host smtp.live.com car j'envois un mail vers hotmail et en username et password les login et pass du compte vers lequel j'envois le mail..
    j'ai le message d'erreur: smtp connect failed..

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    ok j'ai trouvé la solution à mon pb en effet bcp plus simple phpmailer, merci du renseignement.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    je ne comprends pas:que sont:
    $mail->Username et $mail->Password?
    c'est l'adresse mail et le pass de QUI?l'envoyeur?le destinataire?de qui?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    ok donc personne ne sait me renseigner sur phpmailer car apparemment personne ne l'a jamais utilisé..

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    manifestement, tu n'as fait aucune recherche... ... ni lu la doc.


Discussions similaires

  1. Envoi de pièce jointe par mail en Visual Basic
    Par Milano022 dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/06/2015, 16h46
  2. Upload + envoi de pièce jointe par mail
    Par cover70 dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2012, 15h54
  3. [AC-2010] Envoi PDF + pièces jointes par mail
    Par renard700 dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/06/2012, 21h25
  4. Envoie une pièce jointe par mail en RPGle
    Par Lisogane dans le forum AS/400
    Réponses: 2
    Dernier message: 03/03/2011, 18h57
  5. XBAP - Envoi de pièce jointe par mail
    Par YHDVP dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 22/10/2009, 17h56

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