p
u
b
l
i
c
i
t
é
publicité

Discussion: Envoyer un email avec attaché [PHP 5.3]

  1. #1
    Membre Expert
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 1 205
    Points
    1 205

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Étudiant
    Inscrit en
    mars 2008
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : mars 2008
    Messages : 271
    Points : 247
    Points
    247

    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
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    5 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    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 : 5 068
    Points : 17 613
    Points
    17 613

    Par défaut

    Bonsoir.

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$fichier\"\n"
    Ici $fichier n'est pas le nom du fichier

    Pareil ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "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
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 1 205
    Points
    1 205

    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
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    5 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    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 : 5 068
    Points : 17 613
    Points
    17 613

    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
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : mars 2004
    Messages : 3 487
    Points : 1 205
    Points
    1 205

    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 : 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
    <?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.

Discussions similaires

  1. Envoyer un email avec csv attaché via sendmail
    Par swissmade dans le forum Ruby
    Réponses: 1
    Dernier message: 19/07/2011, 15h55
  2. Envoyer un email avec Outlook
    Par moumicha dans le forum Access
    Réponses: 17
    Dernier message: 19/07/2006, 09h58
  3. Envoyer un Email avec Outlook à partir d'access
    Par pilotcoater dans le forum Access
    Réponses: 1
    Dernier message: 13/03/2006, 20h04
  4. [VBA]envoyer un email avec un fichier joint à partir d'excel
    Par mcay dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2005, 10h21
  5. Réponses: 5
    Dernier message: 12/12/2005, 22h49

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