Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre Expert Avatar de beegees
    Homme Profil pro David Non communiqué
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 429
    Détails du profil
    Informations personnelles :
    Nom : Homme David Non communiqué
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2004
    Messages : 3 429
    Points : 1 129
    Points
    1 129

    Par défaut Envoyer un email avec attaché

    Bonjour à tous,

    J'aimerais envoyer un email avec un attaché, l'email est correctement envoyé, mais l'attaché n'est pas présent.

    Voici le code qui concerne l'attaché :


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    //=====Lecture et mise en forme de la pièce jointe.
        $fichier   = fopen($_SESSION['$path'],"r");
        $attachement = fread($fichier, filesize($_SESSION['$path']));
        $attachement = chunk_split(base64_encode($attachement));
        fclose($fichier);
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$fichier\"\n" . 
        "Content-Disposition: attachment;\n" . " filename=\"$fichier\"\n" . 
        "Content-Transfer-Encoding: base64\n\n" . $attachement . "\n\n";
        $message .= "--{$mime_boundary}\n";
        //==========
    ?>
    Je n'ai aucune erreur lors de l'envoi, mais pas d’attaché. J'ai l'impression que l'attaché est dans le mail :

    Content-Type: {"application/octet-stream"}; name="Resource id #8" Content-Disposition: attachment; filename="Resource id #8" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEAtAC0AAD/4TlMRXhpZgAATU0AKgAAAAgACwEPAAIAAAAKAAAIngEQAAIA AAAJAAAIqAESAAMAAAABAAEAAAExAAIAAAAKAAAIsgEyAAIAAAAUAAAIvAITAAMAAAABAAIAAIdp AAQAAAABAAAI0MSlAAcAAADQAAA3tMbSAAcAAABAAAA4hMbTAAcAAACAAAA4xOocAAcAAAgMAAAA kgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAFBhbmFzb25pYwBETUMtRlozOAAAVmVyLjEuMCAgADIwMTA6MDk6MjMgMTA6 MTg6NTYAACaCmgAFAAAAAQAAEqqCnQAFAAAAAQAAErKIIgADAAAAAQACAACIJwADAAAAAQGQAACQ AAAHAAAABDAyMjGQAwACAAAAFAAAErqQBAACAAAAFAAAEs6RAQAHAAAABAECAwCRAgAFAAAAAQAA EuKSBAAFAAAAAQAAEuqSBQAFAAAAAQAAEvKSBwADAAAAAQAFAACSCAADAAAAAQAAAACSCQADAAAA AQAQAACSCgAFAAAAAQAAEvqSfAAHAAAklAAAEwKSkQACAAAAAzAwAACSkgACAAAAAzAwAACgAAAH a/r0enKdA8eeAYBHovivw/O73On65axg4iW7juDK8W1DDKZYmRHRhUYnDY+pF4mU1bSLilZ305XJ 396yi1GTV1drS+umNhgsFSVCOqu2m3fTXmUV0bbTaVk7J200/9k= --
    Je me demandais si il ne manquait pas quelques lignes de codes dans le bloc ci-dessus ?


    Merci d'avance et bonnes fêtes.

    bee

  2. #2
    Membre confirmé Avatar de shell13010
    Homme Profil pro kyle debasa
    Étudiant
    Inscrit en
    mars 2008
    Messages
    266
    Détails du profil
    Informations personnelles :
    Nom : Homme kyle debasa
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : mars 2008
    Messages : 266
    Points : 219
    Points
    219

    Par défaut

    Session te retourne quoi?

    Car d'après se que je vois tu appels juste le chemin et a aucun moment tu appel le fichier...
    "Quelle prétention de prétendre que l'informatique est récente: Adam et Eve avaient déjà un Apple!"

  3. #3
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    4 902
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 4 902
    Points : 16 730
    Points
    16 730

    Par défaut

    Bonsoir.

    Je relève déjà une erreur dans l'entête du mail :

    Code :
    $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$fichier\"\n"
    Ici $fichier n'est pas le nom du fichier

    Pareil ici :

    Code :
    "Content-Disposition: attachment;\n" . " filename=\"$fichier\"\n"
    Après le content-type aussi lui ne me semble pas correcte. Là ton mail est composé de plusieurs éléments avec chacun leur type MIME respectif (le corps du mail et le fichier attaché ont deux MIME-type distincts). Et de mémoire t'as un type MIME "multipart/mixed" qui permet de définir une suite d'éléments.

    Tu as un exemple un moment donné dans le man PHP : http://php.net/manual/fr/function.mail.php

    Il me semble qu'il existe aussi une lib PEAR de plus haut niveau pour gérer ce genre de chose plus simplement. D'ailleurs le man le mentionne également :

    Citation Envoyé par man PHP
    Si vous prévoyez d'envoyer des mails HTML ou autrement plus complexes, il est recommandé d'utiliser le paquet PEAR » PEAR::Mail_Mime.
    Et comme je suis gentil, je te donne même la doc vers cette lib : http://pear.php.net/package/Mail_Mime/docs

    Bonne année,
    Idriss
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

  4. #4
    Membre Expert Avatar de beegees
    Homme Profil pro David Non communiqué
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 429
    Détails du profil
    Informations personnelles :
    Nom : Homme David Non communiqué
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2004
    Messages : 3 429
    Points : 1 129
    Points
    1 129

    Par défaut

    Bonsoir à vous deux,

    Merci pour vos réponses.

    J'ai finalement repris tout de zéro et cela fonctionne maintenant très bien.

    @Idriss: je prends bonne note de tes remarques (PEAR...).

    Je vous remercie encore et je vous souhaite une bonne année.

    bee

  5. #5
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    4 902
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 4 902
    Points : 16 730
    Points
    16 730

    Par défaut

    J'ai finalement repris tout de zéro et cela fonctionne maintenant très bien.
    Super

    Mais c'est dommage de ne pas indiquer ta solution ici, ça pourrait toujours servir

    A+
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

  6. #6
    Membre Expert Avatar de beegees
    Homme Profil pro David Non communiqué
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 429
    Détails du profil
    Informations personnelles :
    Nom : Homme David Non communiqué
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2004
    Messages : 3 429
    Points : 1 129
    Points
    1 129

    Par défaut

    Citation Envoyé par ok.Idriss Voir le message
    Super

    Mais c'est dommage de ne pas indiquer ta solution ici, ça pourrait toujours servir

    A+
    Bien sûr, voici le code demandé :

    Code :
    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
    <?php
        session_start();
     
        // email fields: to, from, subject, and so on
        $to = "monemail@gmail.com";
        $subject ="My subject";
        $from = $_POST['netID']."@gmail <".$_POST['netID']."@gmail.com>";
         $message = '<div style="text-align:center";><img id="logo_padi" width="102px" height="120px"  /></div>';
        $message.=  "<p><b>".$_POST['matricule'] . " " . $_POST['prenom'] . " " . $_POST['nom'] . " (" . $_POST['netID']."</b>) a laissé ce message </p>";
        $message.= "\n\n";
        $message.= "<p>Type de problème : <b>" . $_POST['type_probleme']."</b></p>";
        $message.= "<p>Description du problème : </p>";
        $message.= "<p>-----------------Début---------------------</p>";
        $message.= "<b>".$_POST['message']."</b>";
        $message.= "<p>------------------Fin----------------------</p>";
        $message.= "<p>Situation géographique du problème : </p>";
        $message.= "<p>Campus :<b> " . $_POST['campus'] . "</b> - Faculté : <b>" . $_POST['faculte']. "</b> - Local : <b>" . $_POST['local']. "</b> - Nom du PC : <b>". $_POST['nom_PC']."</b></p>";
         if(isset($_SESSION['$path']))
        {
        $fichier_joint = explode('\\',$_POST["piece_jointe"]);
        $message.= "<p>Pièce jointe : <a href='padi.ac.be/help/upload/".$_POST['piece_jointe']."'>padi.be/help/upload/".$fichier_joint[sizeof($fichier_joint)-1]."</a></p>";
        }
        $headers = "From: $from";
        if(isset($_SESSION['$path']))
        {
        $path = $_SESSION['$path'];
        }
     
        // boundary
        $semi_rand = md5(time());
        $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
     
        // headers for attachment
        $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
     
        // multipart boundary
        $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
        $message .= "--{$mime_boundary}\n";
         if(isset($_SESSION['$path']))
        {
        // preparing attachments
        $file = fopen($path,"rb");
        $data = fread($file,filesize($path));
        fclose($file);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$path\"\n" . "Content-Disposition: attachment;\n" . " filename=\"$path\"\n" .     "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
        $message .= "--{$mime_boundary}\n";
        }
        // send
     
        $ok = @mail($to, $_POST['campus']." ".$_POST['faculte']." ".$_POST['local']." ".$_POST['type_probleme'], $message, $headers);
        unset($_SESSION['$path']);
        print_r($_SESSION);
        if ($ok)
        {
            echo "<p>mail sent to $to!</p>";
        } else
        {
            echo "<p>mail could not be sent!</p>";
        }
     
    ?>

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •