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 :

[Mail] Encore un probleme de mail avec piece jointe


Sujet :

Langage PHP

  1. #1
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut [Mail] Encore un probleme de mail avec piece jointe
    Salut à tous et à toutes.

    je sais que nombreux sont les aides, FAQ, script tous fait et tout et tout sur le sujet,

    mais malgré tout cela ( j'ai ré-ecrit 4 fois ce code !!! ) le script ne marche pas, je reçois le mail, il y à une pièce jointe mais elle fait 0 Ko

    et j'ai une erreur type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Warning:  fopen(Encoder une vidéo.doc) [<a href="http://www.apcrecrutement.com/v2/site/function.fopen" target="_blank">function.fopen</a>]: 
    failed to open stream: No such file or directory in
     /home/www/.../web/v2/site/mail_cand.php on line 37
     
    Warning:  filesize() [<a href="http://www.apcrecrutement.com/v2/site/function.filesize" target="_blank">function.filesize</a>]: 
    Stat failed for Encoder une vidéo.doc 
    (errno=2 - No such file or directory) in /home/www/.../web/v2/site/mail_cand.php on line 38
     
    Warning:  fread(): supplied argument is not a valid stream resource in
     /home/www/.../web/v2/site/mail_cand.php on line 38
     
    Warning:  fclose(): supplied argument is not a valid stream resource in
     /home/www/.../web/v2/site/mail_cand.php on line 39
    le script :

    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
    <?
     
    /* PARAMETRAGE DU SCRIPT */
    $nom                        = $_POST['nom';
    $prenom                        = $_POST['prenom';
    $contrat                  = $_POST['contrat';
    $j                              = $_POST['jour';
    $m                              = $_POST['mois';
    $a                              = $_POST['annee';
    $suf                        = "_cv.doc";
    $filenewname            = $prenom."_".$nom."_".$j."_".$m."_".$a.$suf;
    $path                        = $_FILES['cv'['name'; 
    $size                        = $_FILES['cv'['size'; 
     
    $objet_page  = "Candidature de Mr $nom $prenom";                        /* Objet du mail (utile si vous utilisez ce script sur plusieures pages de votre site) */
     
     
     
    $reponse=StripSlashes("Merci, votre mail a bien été envoyé !"); /* Réponse de l'envoi du mail*/
     
    if($contrat==1){$contratchk="emploi" and $dest="1@apcrecrutement.com";} // candidature
    else{if ($contrat==2){$contratchk="stage" and $dest="2@apcrecrutement.com";} //stage
    else{$contratchk="contrat d'alternance" and $dest="3@apcrecrutement.com";} }//alternance
    $email      = "webmaster@apcrecrutement.com"; // expediteur
     
    /* FIN DU PARAMETRAGE */
     
      // on génère une frontière
      $boundary = '-----=' . md5( uniqid ( rand() ) );
      // on génère un identifiant aléatoire pour le fichier
      $file_id  = md5( uniqid ( rand() ) ) . $_SERVER['SERVER_NAME';
     
      // on va maintenant lire le fichier et l'encoder
     
     $fp = fopen($path, 'rb');
     $content = fread($fp, filesize($path));
     fclose($fp);
     $content_encode = chunk_split(base64_encode($content));
      $headers  = "From: \"SiteV2\"<webmaster@apcrecrutement.com>\n";
      $headers .= "MIME-Version: 1.0\n";
      $headers .= "Content-Type: multipart/related; boundary=\"$boundary\"";
     
      $message  = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
      $message .= "--" . $boundary . "\n";
      $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
      $message .= "Content-Transfer-Encoding: 8bit\n\n";
      $message .= "<html><body>Salut Alphonse, <br><br>";
      $message .= "Voila le fichier que tu m'as demandé :<br>";
      $message .= "<img src=\"cid:$file_id\" alt=\"le fichier demandé\"><br>";
      $message .= "<br>@+";
      $message .= "\n\n";
      $message .= "--" . $boundary . "\n";
      $message .= "Content-Type: multipart/form-data. ; name=\"$path\"\n";
      $message .= "Content-Transfer-Encoding: base64\n";
      $message .= "Content-Disposition:attachement; filename\"$path\"\n";
      $message .= "Content-ID: <$file_id>\n\n";
      $message .= $content_encode . "\n";
      $message .= "\n\n";
      $message .= "--" . $boundary . "--\n";
     
      mail('utilisateur@site.com', 'le fichier demandé', $message, $headers);
     
    ?>
    voila le formulaire au cas ou :
    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
    <?php
     
    if (isset($_POST['contrat')){
    if ($_POST['contrat'=='1'){$check1='checked';$check2='';$check3='';}
    if ($_POST['contrat'=='2'){$check1='';$check2='checked';$check3='';}
    if ($_POST['contrat'=='3'){$check1='';$check2='';$check3='checked';}}
    else{$check1='checked';$check2='';$check3='';}
     
    echo'
    <div id="titreform">
    <h1>Inscription candidat</h1>
    <h3>Envoyez nous votre CV</h3>
    </div>
    <div id="corpsform">
    <form vname="FormName" name="form" enctype="multipart/form-data" method="post" action="index.php?page=mailcand" />
    <fieldset>
    <legend>Votre recherche d\'emploi</legend>
    <div class="radio">
    <label for="emploi">Un Emploi</label>
    <input title="Un emploi" type="radio" id="emploi" name="contrat"  value="1"'.$check1.' />
    <br />
    <label for="stage"> Un stage</label> 
    <input title="Un stage"  type="radio" id="stage"  name="contrat"  value="2"'.$check2.' />
    <br />
    <label for="alternance">Un contrat en alternance</label>
    <input title="Un contrat d\'apprentissage" id="alternance" type="radio" name="contrat"  value="3"'.$check3.'  />
    </div>
    
           <h4>Quel type de postes cherchez vous ?</h4>
          
           <input onclick="javascript:this.value=\'\';" value="emploi 1" title="Indiquez ici un autre emploi que vous souhaiteriez occuper" type="text" name="poste1" /><br />
           <input onclick="javascript:this.value=\'\';" value="emploi 2" title="Indiquez ici un autre emploi que vous souhaiteriez occuper" type="text" name="poste2" /><br />
           <input onclick="javascript:this.value=\'\';" value="emploi 3" title="Indiquez ici un autre emploi que vous souhaiteriez occuper" type="text" name="poste3" /><br />
    
           </p>
    </fieldset>
                      
    <fieldset>
    <legend>Informations personnelles</legend>
    <label for="prenom">Prénom</label>
    <input onclick="javascript:this.value=\'\';" value="Votre prénom" title="Votre prénom" type=text name="prenom" id="prenom" />
    <br /><label for="nom">Nom de famille</label>
    <input onclick="javascript:this.value=\'\';" value="Votre nom de famille" title="Votre nom de famille" type=text name="nom"id="nom" />
    <br />
    
    <h4>Votre date de naissance (jj/mm/aa)</h4> 
    <select name="jour" title="jour de naissance" size="1">
    ';
    for ($i=1;$i<=31;$i++) {
    echo'<option>'.$i.'</option>
    ';}
    echo'
    </select>
    <select name="mois" title="mois de naissance" size="1" >
    ';
    for ($i=1;$i<=12;$i++) {
    echo'<option>'.$i.'</option>
    ';}
    echo'
    </select>
    
    <select name="annee" title="année de naissance"size="1">
    ';
    $year=date('Y');
    $yearend=$year-70 ;
    $yearstart=$year-15 ;
     
    for ($i=$yearstart;$i>=($yearend);$i--) {
    echo'<option>'.$i.'</option>
    ';}
    echo'
    </select>
    </fieldset>
    <fieldset>
    <legend>Votre CV</legend>
    <h4>Votre cv au format word (.doc) </h4>
    <input type="hidden" title="Taille maximum du fichier" name="MAX_FILE_SIZE" value="1000000" /> 
    <input value="indiquez ici l\'adresse du cv au format word" type="file" title="Votre cv au format word" name="cv" />
    
     <br />
           <br />
    </fieldset>
    
    </div>
    <div id="piedform" class="center">
      <input class="bouton"type="submit" name="envoi" title="Valider le formulaire et envoyer votre cv" value="Valider votre inscription"  />
    </div>
    </form> 
    ';
    ?>
    Je sais, c'est un peu long, le problème ce situe autour du fopen, forcement les trois autres erreurs suivent naturellement.

    je ne comprend pas pourquoi cela ne marche pas !!!!
    je devient dinggggguuuuueeeeeee



    ps : je paie un verre à celui qui trouve !!!

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    J'ai pas recorder le code car trop long. Les types d'erreur qu'il n'a pas acces a tes fichiers. Il y a plusieurs raisons à cela :
    - Le chemin n'est pas bon donc il est préférable d'utiliser la variable d'environnement $_SERVER['DOCUMENT_ROOT']./mon chemin/ Ainsi tu as une garantie du chemin depuis la racine.
    - Tu n'as pas les droit d'acces sur le répertoire ou fichier.
    - Le nom du fichier est pas interprété comme il faut pour x raison.

  3. #3
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    J'ai pas recorder le code car trop long.
    je te comprend, mais je preferais tt mettre au cas ou

    Le chemin n'est pas bon
    il est recuperé par un champs de type FILE (via parcourir...) comment pourrait il avoir une mauvaise adresse

    $_SERVER['DOCUMENT_ROOT']./mon chemin/ Ainsi tu as une garantie du chemin depuis la racine.
    je n'ai jamais utilisé les variable $_SERVER et ne sait pas du tout en quoi elle peuvent m'aider

    Tu n'as pas les droit d'acces sur le répertoire ou fichier.
    c'est l'explication la plus logique mais deja verifiée, et il me siffle les meme erreurs en LOCAL !!!

    - Le nom du fichier est pas interprété comme il faut pour x raison.
    là, je te demande qq explication de plus car je ne comprend pas

    voila en gros c'est l'horreur à debuguer ce script,
    si quelqu'un as une solution simple qui marche
    type formulaire + traitement
    (ne serait ce que pour un test on ne sait jamais)
    ps: pour info les fichier envoyé sont des *.DOC

    J'en peu plus !!!!! ce script me pete les cs !!!
    Si qq as une idée plus efficace qu'un forum pour m'en sortir, n'hesiter pas, si vous avez besoin d'info, d'autres documents ou de n'importe quoi d'autre, je me tiens à votre disposition...

    je crois qu'au point ou j'en suis, je serait pres à donner mon c pour une reponse



  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Voici un code que j'ai fais normalement il fonctionne. S'il y a des soucies avec nous allons le voir ensemble.

    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
    143
     
    //PREMIER FICHIER.
    <? $nbFile = 3; ?>
    <html>
    <body>
    <form action="mail.php" method="POST" enctype="multipart/form-data" name="formulaire">
       <br><br>
       <table style="border:1px solid #000000" align="center">
         <tr>
           <td colspan="2" class="en-tete">Envoyer vos informations concernant le produit</td>
         </tr>
         <tr>
           <td colspan="2">
             <textarea name="message"></textarea>
           </td>
         </tr>
    <? for($i=0;$i<$nbFile;$i++){ ?>
         <tr>
           <td>Fichier image <? echo $i+1; ?> :</td>
           <td><input type="file" name="fichier<? echo $i; ?>" value="">
         </tr>
    <? } ?>
         <tr>
           <td align="center" colspan="2"><input type="submit" name="action" value="Envoyer"></td>
         </tr>
       </table>
       <input type="hidden" name="nbfile" value="<? echo $nbFile; ?>">
    </form>
    </body>
    </html>
     
    //FICHIER MAIL.
    //$filename : chemin du fichier.
    function get_extension($filename){
       $parts = explode('.',$filename);
       $last = count($parts) - 1;
       $ext = $parts[$last];
       return $ext;
    }
     
     
    if($_SERVER['REQUEST_METHOD'] == 'POST'){  //Détecte si c'est le post provient d'un POST.
      $isConform        = false;
      $attachment       = array();
      $arrNameFile      = array();
      $arrSource        = array();
      $arrExtension     = array();
      $arrType          = array();
      $arrInfoManu      = array();
      $arrExtensionCTRL = array('jpg','jpeg','bmp','psd','png','gif','tif','tiff');
      $boundary = "-----=".md5(uniqid(rand()));
      $extensionTemp    = '';
      $file             = '';
      $attachment       = '';
     
      $destinataire     = 'mail destinataire';
      $from             = 'votre mail';
      $reponse          = 'votre mail réponse';
      $sujet            = 'Votre sujet';
      $repertoire       = 'tmpimg'; //Répertoire ou ce trouverons les fichiers attachées.
      $fp               = null;
      $type             = 'text/plain';
      $message          = trim($_POST['message']);
     
      if($_POST['action'] == 'Envoyer'){
        for($i=0;$i<$_POST['nbfile'];$i++){ //Boucle sur le nombre de champs de type file
          $extensionTemp = get_extension($_FILES['fichier'.$i]['name']); // Récupère l'extension du fichier
          if($_FILES['fichier'.$i]['name'] != ''){  //Détecte si il y a eu un fichier d'envoyé.
            if(in_array(strtolower($extensionTemp), $arrExtensionCTRL)){ //Regarde si l'extension est valide.
              $arrNameFile[$i] = $_FILES['fichier'.$i]['name'];  //Nom du fichier
              $arrSource[$i]   = $_FILES['fichier'.$i]['tmp_name']; //Fichier temporaire :: contenu.
              $isConform = true;  //Il est donc conforme.
            }else{
              $isConform = false; //Il n'est pas conforme
            }
          }
        }
      }
     
      //Redirection dans le cas ou il y a une extension non valide.
      if($isConform == false){
        header('Location:page_erreur.php?erreur=true');
        exit();
      }
      //Boucle sur le nombre de fichier valide.
      for($i=0;$i<count($arrNameFile);$i++){
        copy($arrSource[$i], $repertoire.'/'.$arrNameFile[$i]); //Copie le fichier dans une zone précise du disque
        $arrExtension[$i] = strtolower(get_extension($arrNameFile[$i])); //récupère l'extension
        if($arrExtension[$i] == 'gif')                                     $arrType[$i] = 'image/gif';  //gif
        else if($arrExtension[$i] == 'bmp')                                $arrType[$i] = 'image/bmp';  //bmp
        else if($arrExtension[$i] == 'png')                                $arrType[$i] = 'image/png';  //png
        else if($arrExtension[$i] == 'psd')                                $arrType[$i] = 'image/psd';  //psd
        else if($arrExtension[$i] == 'jpg' || $arrExtension[$i] == 'jpeg') $arrType[$i] = 'image/jpeg'; //jpg
        else if($arrExtension[$i] == 'tif' || $arrExtension[$i] == 'tiff')  $arrType[$i] = 'image/tiff'; //tif
      }
     
    //----------------------------------
    // Construction de l'entête
    //----------------------------------
     
      $header = "MIME-Version: 1.0\r\n";
      $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
      $header .= "\r\n";
     
      $msg = "Je vous informe que ceci est un message au format MIME 1.0.\r\n";
     
      $msg .= "--$boundary\r\n";
     
      $msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
     
      $msg .= "Content-Transfer-Encoding:8bit\r\n";
      $msg .= "\r\n";
      $msg .="===================VOTRE MESSAGE===================\r\n\r\n";
      $msg .= $message;
      $msg .= "\r\n";
     
      for($i=0;$i<count($arrNameFile);$i++){
        $file = $repertoire.'/'.$arrNameFile[$i];
     
        $fp = fopen($file, 'rb');
        $attachment = fread($fp, filesize($file));
        fclose($fp);
        $attachment = chunk_split(base64_encode($attachment));
     
        $msg .= "--$boundary\r\n";
        $msg .= "Content-Type: ".$arrType[$i]."; \r";
        $msg .= "name=\"".$arrNameFile[$i]."\"\r\n";
        $msg .= "Content-Transfer-Encoding: base64\r\n";
        $msg .= "Content-Disposition: inline;\r\n filename=\"".$arrNameFile[$i]."\"\r\n";
        $msg .= $attachment . "\r\n";
     
        $msg .= "\r\n";
        $msg .= "\r\n\r\n";
        unlink($file);
      }
      $msg .= "--$boundary--\r\n";
      if(mail($destinataire, $sujet , $msg,"Reply-to: $reponse\r\nFrom: $from\r\n".$header)){
        echo "OK";
      }else{
        echo "ERREUR";
      }
    }
    ?>

  5. #5
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    je n'aurais peut etre pas le temps de le tester avant lundi

    mais je te remercie,
    et te tiens au courant rapidement


    MERCI DE NE PAS ME LAISSER TOMBER !!!!

  6. #6
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    Salut berceker,

    voila, j'ai essayé de bosser ton doc, but ,



    J'ai pas réussi à le faire marché, en revanche, j'ai trouvé un script tout petit qui fonctionne presque, peut etre pourra tu m'aider à le faire fonctionner

    voila le code :

    <?php
    $boundary
    = "-----=".md5(uniqid(rand()));
    //En-têtes du mail
    $headers="From: site@apcrecrutement.com\r\n
    MIME-Version: 1.0\r\n
    Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n"
    ;

    //Corps du mail en commençant par le message principal
    $body="--". $boundary ."\n

    Content-Type: text/plain; charset=ISO-8859-1\r\n\n
    Message principal du mail.\n\n"
    ;

    /* Piece jointe, on va dire que notre fichier s'appele bidule.doc et qu'il se situe dans le repertoire courant */

    $fichier=file_get_contents('./video.doc');
    /* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */
    $fichier=chunk_split( base64_encode($fichier) );

    //Ecriture de la pièce jointe
    $body = $body . "--" .$boundary. "\n
    Content-Type: application/msword; name=\"video.doc\"\r\n
    Content-Transfer-Encoding: base64\r\n
    Content-Disposition: attachment; filename=\"video.doc\"\r\n\n
    $fichier"
    ;

    //Fermeture de la frontière
    $body = $body . "--" . $boundary ."--";

    //Envoi du mail
    mail("1@apcrecrutement.com", "test d'envoi d'email avec piece jointe", $body, $headers);
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Le résultat :

    le mail arrive, fait un poids à peu pres coérent, mais pas de piece jointe et un amas de caractere sur la fin, etrange aussi (je crois, on vois les boundary...)

    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
    MIME-Version: 1.0
    
    Content-Type: multipart/mixed;
    boundary="-----=4b3692b8e517ba34b7c54289d8b56cab"
    
    
    
    -------=4b3692b8e517ba34b7c54289d8b56cab
    
    Content-Type: text/plain; charset=ISO-8859-1
    
    
    Message principal du mail.
    
    -------=4b3692b8e517ba34b7c54289d8b56cab
    
    Content-Type: application/msword; name="video.doc"
    
    Content-Transfer-Encoding: base64
    
    Content-Disposition: attachment; filename="video.doc"
    
    
    0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAAjgAAAAAAAAAA
    EAAAkAAAAAEAAAD+////AAAAAIwAAACNAAAA////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////s
    pcEANUAJBAAA8BK/AAAAAAAAMAAAAAAABgAAD2IAAA4AYmpias8yzzIAAAAAAAAAAAAAAAAAAAAA
    AAAMBBYALpYAAK1YAACtWAAAD1oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA
    
    ...  PLEIN puis ....
    
    AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAIgAAAAAAOYBAAAAAAAA5gEAAOYB
    -------=4b3692b8e517ba34b7c54289d8b56cab

  7. #7
    Membre habitué Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Points : 176
    Points
    176
    Par défaut
    Moi j'ai cette classe là qui fonctionne parfaitement sur tous mes projets :
    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
     
    Class Email{
    ///////////////////////////////////////////////////////////////////////////////////////
    	// ATTRIBUTS PRIVES //
    	///////////////////////
    	var $_nomdestinataire;
    	var $_destinataire;
    	var $_sujet;
    	var $_fichier;
    	var $_textemail;
    	var $_surnom;
    	var $_expediteur;
     
    	//Construction de l'objet je range les valeurs passée en paramètre dans les attributs de la classe	
    	function __construct($nom, $dest, $suj, $file, $txt, $surn, $exp)
    	{
    		$this->_nomdestinataire=$nom;//nom du destinataire
    		$this->_destinataire=$dest;//adresse email du destinatiare
    		$this->_sujet=$suj;//sujet du mail
    		$this->_fichier=$file;//fichier joint
    		$this->_textemail=$txt;//texte contenu dans l'e-mail
    		$this->_surnom=$surn;//surnom de l'expediteur
    		$this->_expediteur=$exp;//e-mail de l'expediteur
    	}
     
    function send_mail()
    	{
    		// on génère une frontière
    		$boundary = '-----=' . md5( uniqid ( rand() ) );
     
    		//Nom du fichier ci-dessous
    		$fichier=$this->_fichier;
     
    		// on va maintenant lire le fichier et l'encoder
            if ($this->_fichier != '')
            {
                $path = $this->_fichier; // chemin vers le fichier
        		$fp = fopen($path, 'rb');
        		$content = fread($fp, filesize($path));
        		fclose($fp);
        		$content_encode = chunk_split(base64_encode($content));
    		}
    		$headers  = "From: ".$this->_surnom."<".$this->_expediteur.">\n";
    		$headers .= "MIME-Version: 1.0\n";
    		$headers .= "Content-Type: multipart/mixed; boundary=".$boundary."";
     
    		//Création du message
    		$message  = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
    		$message .= "--" . $boundary . "\n";		
    		$message .= "Content-Type: text/HTML; charset=\"iso-8859-1\"\n";
    		$message .= "Content-Transfer-Encoding: 8bit\n\n";
    		$message .= "".$this->_textemail."\n";
    		$message .= "\n";
    		$message .= "--" . $boundary . "\n";		
            if ($this->_fichier != '')
            {
                $message .= "Content-Type: application/octet-stream; name='".$this->_fichier."'\n";
        		$message .= "Content-Transfer-Encoding: base64\n";
        		$message .= "Content-Disposition: attachment; filename=".$this->_fichier."\n\n";
        		$message .= $content_encode . "\n";
        		$message .= "\n\n";
        		$message .= "--" . $boundary . "--\n";
    		}
     
    		mail($this->_destinataire, $this->_sujet, $message, $headers);//fonction mail() de php permettant l'envoi du mail
    	}
    }
    et voici comment je l'utilise dans un script banal :
    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
     
     
    $email = new Email();//declarartion de l'objet
    		$recepteur=$Sprenom." ".$Snom;//concaténation du prenom et du nom de l'utilisateur pour l'envoi du mail
    		$email->__construct($recepteur, $to, 'Extraction', $fichier, $contenu, "NOMEXP", "test@test.fr");//construction de l'objet
    		/*
    		$Snom correspond au nom du destinataire
    		$to est l'e-mail du destinataire
    		'Extraction' c'est le sujet du message
    		$fichier est le nom du fichier à envoyer par e-mail
    		$contenu est le message que contiendra l'e-mail
    		"NOMEXP" c'est le nom de l'expéditeur
    		"test@test.fr" c'est l'email de l'expediteur
    		*/
    		$email->send_mail();//Utilisation de la focntion send_mail
    Si ca peut t'aider...
    PS : petite précision cette classe est ecrite en php4 et respecte l'encapsulation des données

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

Discussions similaires

  1. [XL-2003] Probleme VBA excel générer mail automatique avec piece jointe
    Par itshy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/03/2012, 10h46
  2. [oracle 9] Envoi de mail avec piece jointe
    Par tipote69 dans le forum Oracle
    Réponses: 2
    Dernier message: 01/03/2006, 15h01
  3. probleme d'envoi de mail avec pieces jointes
    Par tmryuga dans le forum ASP
    Réponses: 9
    Dernier message: 23/02/2006, 14h56
  4. Réponses: 5
    Dernier message: 12/12/2005, 08h52
  5. envoi mail avec piece jointe fichier excel
    Par flogreg dans le forum ASP
    Réponses: 12
    Dernier message: 20/12/2004, 16h02

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