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'un email avec piece jointe php / classe mime_mail


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut envoi d'un email avec piece jointe php / classe mime_mail
    Bonjour

    J'essaie sans succès d'envoyer un mail en php avec pièce jointe en utilisant la classe mime_mail.class.php, la pièce jointe et bien envoyé mais elle ne fait que 0 octet (0 Ko) et le fichier "test.png" ce trouve bien dans le même dossier que mail.php et mime_mail.class.php.
    Le corps du message est absent, pourtant c'est bien indiquer dans mail.php à la ligne 11.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->body = "Ceci est un test."; // Corps du message
    Es-ce que cela peut venir de wampserver ?
    je n'arrive pas trouver le problème ou bien j'ai merdé quelque part !
    Avez vous une idée de ce qui ce passe ?
    Merci.



    mail.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
     
    <?php 
    // Declaration de la classe
    require "mime_mail.class.php";
     
    // ouverture et lecture du fichier
    $fichier_attache = fread(fopen("test.png", "r"), filesize("test.png"));
     
    // Instanciation de la classe
    $mail = new mime_mail();
    $mail->to = "destinataire@free.fr"; // Adresse email de reception
    $mail->subject = "Test envoi pièce jointe"; // Sujet
    $mail->body = "Ceci est un test."; // Corps du message
    $mail->from = "expediteur@free.fr"; // Adresse email de l'expediteur (optionnel)
    $mail->headers = "Date: ".date('d/m/Y H:i'); // Entetes supplementaires (optionnel)
    $mail->attach("$fichier_attache", "test.png"); // fichier attache (optionnel)
    // envoi du message
     
    $mail->send();
    ?>
    mime_mail.class.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
    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
     
    <?php
     class mime_mail
     {
     
     var $parts;
     var $to;
     var $from;
     var $headers;
     var $subject;
     var $body;
     
     // constructeur
     function mime_mail()
     {
     
     $this->parts = array();
     $this->to = "";
     $this->from = "";
     $this->subject = "";
     $this->body = "";
     $this->headers = "";
     
     }
     
     // attache un fichier au message
     function attach($message,$name,$ctype = '')
     {
     
     // type de contenu non defini
     if(empty($ctype)){
     // on essaie de reconnaitre l'extension
     switch(strrchr(basename($name), ".")){
     case ".gz": $ctype = "application/x-gzip"; break;
     case ".tgz": $ctype = "application/x-gzip"; break;
     case ".zip": $ctype = "application/zip"; break;
     case ".pdf": $ctype = "application/pdf"; break;
     case ".png": $ctype = "image/png"; break;
     case ".gif": $ctype = "image/gif"; break;
     case ".jpg": $ctype = "image/jpeg"; break;
     case ".txt": $ctype = "text/plain"; break;
     case ".htm": $ctype = "text/html"; break;
     case ".html": $ctype = "text/html"; break;
     default: $ctype = "application/octet-stream"; break;
     }
     }
     
     $this->parts[] =
     array (
     "ctype" => $ctype,
     "message" => $message,
     "encode" => $encode,
     "name" => $name
     );
     
     // fin de fonction
     }
     
     // fonction utilisee pour contruire le message MIME
     // utilisee depuis build_multipart()
     function build_message($part)
     {
     
     $message = $part[ "message"];
     $message = chunk_split(base64_encode($message));
     $encoding = "base64";
     
     return "Content-Type: ".$part[ "ctype"].
     ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : "").
     "\nContent-Transfer-Encoding: $encoding\n\n$message\n";
     
     }
     
     // compose le message MIME
     // utilisee depuis send()
     function build_multipart()
     {
     
     $boundary = "b".md5(uniqid(time()));
     $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
     
     for($i = sizeof($this->parts) - 1; $i >= 0; $i--)
     {
     $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
     }
     
     return $multipart.= "--\n";
     
     }
     
     // envoie le message
     // derniere fonction a appeler
     function send()
     {
     
     $mime = "";
     // parametres optionnels
     if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
     if (!empty($this->headers)) $mime .= $this->headers. "\n";
     if (!empty($this->body)) $this->attach($this->body, "", "text/plain");
     
     // entete MIME
     $mime .= "MIME-Version: 1.0\n".$this->build_multipart();
     // envoi du message
     mail($this->to, $this->subject, "", $mime);
     
     }
     
    }; // fin de la classe 
    ?>

  2. #2
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    En présupposant que la classe mail_mime est sans bug, et que tu l'utilise correctement, est-ce que ton fichier est accessible en lecture par le serveur ?

    Est-ce que tu peux activer les E_WARNING et voir s'il y a pas quelque chose de louche qui se passe ?

    Quand tu regarde la source intégrale de ton email (avec les header et tout), tu vois bien les 2 parties distinctement ?

Discussions similaires

  1. Envoi d' email avec piece jointe executable
    Par Cybercope dans le forum VBScript
    Réponses: 5
    Dernier message: 07/08/2014, 10h41
  2. Envoi email avec piece jointe
    Par mdh12 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 27/12/2010, 22h04
  3. Envoie d'email avec piece jointe
    Par hid_dev dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/05/2010, 01h33
  4. Envoi email avec piece jointe
    Par Dos dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2010, 16h25
  5. erreur envoi email avec piece jointe.
    Par pinoccio dans le forum Outlook Express / Windows Mail
    Réponses: 4
    Dernier message: 06/09/2009, 20h06

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