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 d'E-mail avec une pièce jointe


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut envoi d'E-mail avec une pièce jointe
    Bonjour, je voudrais s'il vous plait résoudre un problème le suivant:
    je voudrais envoyer un mail avec une pièce jointe et des données en même temps.
    alors j'ai 2 fichiers formulaire.php et send.php, je remplis mon formulaire et je sélectionne le fichier à envoyer puis j'envois tous à mon fichier send.php.
    mon problème c'est que tou va bien sauf que j'ai un message d'erreur :

    Warning: file_get_contents(monfichier2.pdf) [function.file-get-contents]: failed to open stream: No such file or directory in /.../.../www/monsite.com/send.php on line 52.

    *je pense qu'il prenne en considération que le nom de fichier qui existe sur mon serveur distant,sinon il affiche l'erreur précèdent.

    voila le code des fichiers:

    send.php

    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
     
    <?php
     
    $delim = md5(uniqid(rand()));//délimiteur qui sépare les 2 parties
    //type du format MIME utilisé</p>
    $head= "MIME-Version: 1.0\n";
    //type de contenu et frontière entre parties</p>
    $head .= "Content-Type:multipart/mixed; boundary=\"$delim\" \n ";
    $head .= " \n";   
     
    // message à destination des logiciels ne lisant pas le type MIME</p>
    $msg .="Ce message est au format MIME...\n ";
    $msg .= "\n";//derniere ligne du block est vide:la fin des en-entetes et le début du block de contenu
     
    //première partie du message
    //on indique la frontière
    $msg .= "--$delim\n";
    //on indique  le type de contenu du message et comment il sera codé
    $msg .= "Content-Type: text/plain; charse=\"iso-8859-1\"\n";
    $msg .= "Conent-Transfert-Encoding:8bit\n";
    $msg .= "\n";
    $msg .= "Nom:".$_POST['name']."\n"
                ."Prenom:".$_POST['prenom'] ."\n"          
                ."Sujet:".$_POST['sujet'] ."\n"
                ."Phone:".$_POST['telephone']."\n"
    	    ."Message: ".$_POST['comment']."\n"
    	    ."Pièce jointe :".$_POST['cv']."\n"
    	    ."E-mail :".$_POST['email']."\n";
     
    $msg .= "\n";
     
    //seconde partie du message :récuperer le fichier joint
    $fichier = $_POST['cv'];
    $attache = file_get_contents($fichier);
    //convertir le contenu du fichier pour être conforme au  format RFC 2045
    $attache = chunk_split(base64_encode($attache));
     
    $msg .= "--$delim\n";
    $msg .= "content-Type: FILE_TXT; name=\"$fichier\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n";
     
    $msg .= "Content-Disposition: inline; filename=\"$fichier\"\n";
    $msg .= "\n";
     
    $msg .= $attache . "\n";
    $msg .= "\n";
     
    $msg .= "--$delim--";
     
    $dest = "contact@monsite.com";
    $exped = $_POST['email'];
     
    mail($dest,"sujet d'email",$msg,"Reply-to:$exp\nFrom: $exped\n".$head);
     
    include './index.php';	
    ?>
    et le fichier formulaire.php
    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
     
    <form action="send.php" method="post" name="contactForm" id="myform" style="margin-bottom: 90px;">
      <p class="double">
        <label for="f1-nom">Nom:</label>
        <input type="text" name="name" id="name" />
        <span class="nom-invalid"></span>
      </p>
      <p class="double">
        <label for="f1-prenom">Prénom:</label>
        <input type="text" name="prenom" id="prenom" />
        <span class="prenom-invalid"></span>
      </p>
     
      <p class="double">
        <label for="f1-telephone">Téléphone:</label>
        <input type="text" name="telephone" id="telephone" />
        <span class="telephone-invalid"></span>
      </p>
     
    <p class="double">
      <label for="f1-email"> Email:</label>
      <input name="email" id="email" type="text" />
      <span class="email-invalid"></span>
      <span class="email-format"></span>
    </p>
     
    <p class="double">
      <label for="f1-cv"> CV:</label>
      <input name="cv" id="cv" type="file" />
      <span class="cv-invalid"></span>
      <span class="cv-format"></span>
    </p>
     
      <p class="double">
        <label for="f1-sujet">Sujet:</label>
        <input type="text" name="sujet" id="sujet" />
        <span class="sujet-invalid"></span>
      </p>
     
        <p class="double">
        <label for="f1-infos">Message:</label>
        <!--<span class="info"></span></label>-->
        <textarea id="comment" name="comment" rows="5" cols="30"></textarea>
      </p>
     
      <p class="simple">
        <input type="submit" id="submit" name="submit" value="Envoyer" />
      </p>
    </form>
    je vous remercie tous pour votre aide

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    ben pourquoi tu essaies pas de corriger le chemin du fichier "monfichier2.pdf" ? apparament il n'existe pas !
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    une fois que ton mail fonctionnera, tu remarqueras avec amusement que si tes mots de passes php sont stockés dans le même répertoire que send.php dans un fichier application.ini alors une requete POST avec la variable cv=application.ini va gentiment envoyer tes mots de passes par mail.

    Autre chose, $_POST ne permet pas de récupérer un fichier, mais pour debuger le mail ça suffit. Si ce n'est pas volontaire regarde du côté de $_FILES.

    je te recommande d'utiliser un script tout fait pour les mail, comme la classe PEAR parce que c'est super compliqué de gérer tous les cas "à la main".
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    Merci pour vos réponses,mon problème c'est que le fichier que je reçois par mail est vide et j'ai le message d'erreur indiqué en haut.
    je pense qu'il trouve pas le fichier sur mon serveur distant.
    alors comment on peut dire à mon code qu'il cherche le fichier (à envoyer) dans l'URL du fichier?
    merci

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Changer le chemin de recherche du fichier
    Comment modifier le code pour dire au script ou il va chercher le fichier à envoyer?
    merci

Discussions similaires

  1. Envoyer un e-mail avec une pièce jointe
    Par KDZCrew dans le forum Langage
    Réponses: 1
    Dernier message: 10/11/2010, 15h56
  2. Réponses: 4
    Dernier message: 09/06/2010, 17h44
  3. Envoi d'e-mails avec plusieurs pièces jointes
    Par xnomad dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 16/07/2007, 15h02
  4. Réponses: 6
    Dernier message: 14/11/2006, 10h35
  5. Envoi d'un mail avec plusieurs pièces jointes
    Par Wilco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2006, 10h19

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