p
u
b
l
i
c
i
t
é
publicité

Discussion: problème mailing fichier [PHP 5.0]

  1. #1
    Invité régulier
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : avril 2012
    Messages : 19
    Points : 6
    Points
    6

    Par défaut problème mailing fichier

    salut à tous,
    j'ai un problème, quand j'envoie un fichier a un email le serveur me donne ce code :


    Warning: file_get_contents(CV_blabla.pdf) [function.file-get-contents]: failed to open stream: No such file or directory in /homepages/5/d391037984/htdocs/msb/cible.php on line 118
    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
    <?php
    if( isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message'])){
    	//valider le sujet
    	if( empty($_POST['subject'])){
    	$errors[] = "s'il vous plait entrer un sujet.";
    	}else{
    		$subject = htmlentities($_POST['subject']);
    	}
    	// valider email 
    	if( empty($_POST['email'])){
    		$errors[] = "s'il vous plait entrer un email.";
    	}elseif(strlen($_POST['email']) >347 ){
    		$errors[] = "l'adresse est long !! s'il vous plait entrer un valid email.";
    	}elseif(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) == false ){
    		$errors[] = "s'il vous plait entrer un valid email !!.";
    	}else{
    	$email = "<".htmlentities($_POST['email']).">";
    	}
    	//valider reception
    	$recept = "<blabla@blabla.com>";
    	//valider le msg
    	if( empty($_POST['message'])){
    		$errors[] = "s'il vous plait entrer un message.";
    	}else{
    		$message = htmlentities($_POST['message']);
    	}
    }
     
    //test de validation de fichier 
    if( isset($_FILES['cv']) AND $_FILES['cv']['error'] == 0) {
    	if( $_FILES['cv']['size'] <= 1000000 ){
    		$info = pathinfo($_FILES['cv']['name']);
    		$extention_upload = $info['extension'];
    		$extention_autoriser = array('doc', 'docx', 'pdf');
    		if( in_array($extention_upload, $extention_autoriser)){
    			$nomfichier =$_FILES['cv']['name'];
     
     
     
    			//*****************************************************
     
    function mailfichier($email, $recept, $subject, $message, $nomfichier) {
      // generation du separateur, une chaine aleatoire fait l'affaire
      $bound = '------------'.md5(uniqid('toto'));
     
      $entete = 'From: '.$email."\n"
        .'MIME-Version: 1.0'."\n"
        .'Content-Type: multipart/mixed;'."\n"
        .' boundary="'.$bound.'"';
     
      $message = 'This is a multi-part message in MIME format.'."\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain; charset=ISO-8859-1'."\n"
        .'Content-Transfer-Encoding: 7bit'."\n\n"
        .$message
        ."\n\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain;'."\n".' name="'.basename($nomfichier).'"'."\n"
        .'Content-Transfer-Encoding: base64'."\n"
        .'Content-Disposition: attachment;'."\n".' filename="'.basename($nomfichier).'"'."\n\n"
        .chunk_split(base64_encode(file_get_contents($nomfichier)))
        .'--'.$bound.'--'."\n";
     
      return @mail($recept, $subject, $message, $entete);
    }
     
    			mailfichier($email, $recept, $subject, $message, $nomfichier);
     
    		}
     
    	}
    }
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    23 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 932
    Points : 35 191
    Points
    35 191

    Par défaut

    Le fichier uploadé c'est $_FILES['cv']['tmp_name'] ; $_FILES['cv']['name'] c'est uniquement le nom du fichier d'origine.

  3. #3
    Invité régulier
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : avril 2012
    Messages : 19
    Points : 6
    Points
    6

    Par défaut merci

    oui ça marche mais le problème c'est que , moi j'envoie un pdf, et dans le message que j'ai reçu un fichier.txt avec des chiffres ?
    et quand je modifie l'extension de fichier reçu au pdf ça marche !!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    23 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 932
    Points : 35 191
    Points
    35 191

    Par défaut

    Le "name" c'est $_FILES['cv']['name']et le "filename" c'est $_FILES['cv']['tmp_name']

  5. #5
    Invité régulier
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : avril 2012
    Messages : 19
    Points : 6
    Points
    6

    Par défaut

    oui, je compris , mais ce que je veux vous dire c'est que le serveur envoi un fichier sans extension, par contre moi je remplis la formulaire avec un fichier.pdf
    le nom du fichier qu'il envoi : phpJDg1gm
    le message que j'ai reçu :
    Fichiers attachés
    Images attachées Images attachées  

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    23 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 932
    Points : 35 191
    Points
    35 191

    Par défaut

    C'est justement parce que tu utilises le tmp_name à l'endroit il faudrait utiliser le name

  7. #7
    Invité régulier
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : avril 2012
    Messages : 19
    Points : 6
    Points
    6

    Par défaut

    s'il vous plait vous pouvez m'expliquer car j'ai pas bien compris ??
    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
     
    if( isset($_FILES['cv']) AND $_FILES['cv']['error'] == 0) {
    	if( $_FILES['cv']['size'] <= 1000000 ){
    		$info = pathinfo($_FILES['cv']['name']);
    		$extention_upload = $info['extension'];
    		$extention_autoriser = array('doc', 'docx', 'pdf');
    		if( in_array($extention_upload, $extention_autoriser)){
    			$nomfichier =$_FILES['cv']['tmp_name'];
    function mailfichier($email, $recept, $subject, $message, $nomfichier) {
      // generation du separateur, une chaine aleatoire fait l'affaire
      $bound = '------------'.md5(uniqid('toto'));
     
      $entete = 'From: '.$email."\n"
        .'MIME-Version: 1.0'."\n"
        .'Content-Type: multipart/mixed;'."\n"
        .' boundary="'.$bound.'"';
     
      $message = 'This is a multi-part message in MIME format.'."\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain; charset=ISO-8859-1'."\n"
        .'Content-Transfer-Encoding: 7bit'."\n\n"
        .$message
        ."\n\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain;'."\n".' name="'.basename($nomfichier).'"'."\n"
        .'Content-Transfer-Encoding: base64'."\n"
        .'Content-Disposition: attachment;'."\n".' filename="'.basename($nomfichier).'"'."\n\n"
        .chunk_split(base64_encode(file_get_contents($nomfichier)))
        .'--'.$bound.'--'."\n";
     
      return @mail($recept, $subject, $message, $entete);
    }
     
    			mailfichier($email, $recept, $subject, $message, $nomfichier);
     
     
    		}
     
    	}
    }
    c'est comme vous m'avez dit !!

  8. #8
    Invité régulier
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : avril 2012
    Messages : 19
    Points : 6
    Points
    6

    Par défaut merci à tous

    grâce a vous j'ai trouvé la solution, bon si quelqu'un veux la solution c'est :

    comme m'a dit
    le Modérateur
    que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['nom_fichier']['tmp_name']
    renvoi le fichier, par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['nom_fichier']['name']
    renvoi juste le nom.
    alors la solution consiste a envoyer les deux à la fonction c'est comme ceci :
    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
     
     
    if( isset($_FILES['cv']) AND $_FILES['cv']['error'] == 0) {
    	if( $_FILES['cv']['size'] <= 1000000 ){
    		$info = pathinfo($_FILES['cv']['name']);
    		$extention_upload = $info['extension'];
    		$extention_autoriser = array('doc', 'docx', 'pdf');
    		if( in_array($extention_upload, $extention_autoriser)){
     
    			$nomfichier =$_FILES['cv']['name'];
    			$fichiertmp = $_FILES['cv']['tmp_name'];
     
    function mailfichier($email, $recept, $subject, $message, $nomfichier, $fichiertmp) {
      // generation du separateur, une chaine aleatoire fait l'affaire
      $bound = '------------'.md5(uniqid('toto'));
     
      $entete = 'From: '.$email."\n"
        .'MIME-Version: 1.0'."\n"
        .'Content-Type: multipart/mixed;'."\n"
        .' boundary="'.$bound.'"';
     
      $message = 'This is a multi-part message in MIME format.'."\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain; charset=ISO-8859-1'."\n"
        .'Content-Transfer-Encoding: 7bit'."\n\n"
        .$message
        ."\n\n"
        .'--'.$bound."\n"
        .'Content-Type: text/plain;'."\n".' name="'.basename($nomfichier).'"'."\n"
        .'Content-Transfer-Encoding: base64'."\n"
        .'Content-Disposition: attachment;'."\n".' filename="'.basename($nomfichier).'"'."\n\n"
        .chunk_split(base64_encode(file_get_contents($fichiertmp)))
        .'--'.$bound.'--'."\n";
     
      return @mail($recept, $subject, $message, $entete);
    }
    			mailfichier($email, $recept, $subject, $message, $nomfichier, $fichiertmp);
    		}
    	}
    }
    merci groupe developpez.net !! ^^

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

Discussions similaires

  1. [Delphi 3] Problème avec fichier ressource .RES
    Par delphim dans le forum EDI
    Réponses: 2
    Dernier message: 28/06/2005, 18h11
  2. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17
  3. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36
  4. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 09h13
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

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