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] Ajout de Pièce jointe dans un e-mail


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut [Mail] Ajout de Pièce jointe dans un e-mail
    Salut,

    J'aimerai envoyer une pièce jointe par mail. J'ai regardé les tuto je n'ai rien trouvé mais j'ai vu que je pouvais le faire avec PhpMailer. Je ne prefère pas utiliser de class juste pour ça...
    Voila le code que j'ai:

    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
    $boundary = 'front';
    $headers = "MIME-Version: 1.0\r\n".
               "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";
    $body = "--". $boundary ."\n".
            "Content-Type: text/plain; charset=ISO-8859-1\r\n\n".
            "Fichier de sauvegarde en pièce jointe.\n\n";
    $fichier = file_get_contents('dumps/'.$filename.'.'.$ext);
    $fichier = chunk_split( base64_encode($fichier) );
    $body = $body . "--" .$boundary. "\n
            Content-Type: application/msword; name=\"".$fichier.".".$ext."\"\r\n
            Content-Transfer-Encoding: base64\r\n
            Content-Disposition: attachment; filename=\"".$fichier.".".$ext."\"\r\n\n
            $fichier";
    $body = $body . "--" . $boundary ."--";
    mail($email, $subject, $body, $headers);
    Le fichier est soit un .zip soit un .sql
    J'ai bien un fichier attaché lors de la réception mais tout le contenu est une mauvaise interprétation je pense. J'ai pas du tout ce que je devrai avoir.
    Voila le contenu (désolé je préfère tout mettre):

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
     Content-Type: application/msword; name="UEsDBAoAAAAIALK4ITbPEH1F+AAAANQBAAAhAAAAZHVtcHMvc3Fsc2F2ZV8wMTAxMjAwN18yMzA
    Code x : 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
     
    MTMuc3FsldBBa8IwFAfwe6Hf4d1UWNXNbYeJh67GrVjraCLs2Feb2drQhpgI+8h+C5vKEHbYMLzD
    I+8X8k8875blOp4HFM2R71DlHNrK8MAPtsmbuj61rUQFS4XLzgbqhLpsangYj5+7nUJr+TIayUJm
    TVMNJdY5Fzhs1M6ObwtjT1wiaWW22qgukUDQmAkOqSlFadKLcp15sv4A5r9GBMIFkM+QMvpjpq4T
    JMRn5AriNfuFoA8AabGvUjii2hao+pPHQQfjTRS1d3+hERp6vTsLjSn2V/k0+UNW/zoYAInfwpjM
    Vt8h9VcwJwt/EzEI3v2EEjYT7T/X91P70DNQSwECFAAKAAAACACyuCE2zxB9RfgAAADUAQAAIQAA
    AAAAAAAAAAAAAAAAAAAAZHVtcHMvc3Fsc2F2ZV8wMTAxMjAwN18yMzA1MTMuc3FsUEsFBgAAAAAB
    AAEATwAAADcBAAAAAA==
    .zip"
     
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="UEsDBAoAAAAIALK4ITbPEH1F+AAAANQBAAAhAAAAZHVtcHMvc3Fsc2F2ZV8wMTAxMjAwN18yMzA1
    MTMuc3FsldBBa8IwFAfwe6Hf4d1UWNXNbYeJh67GrVjraCLs2Feb2drQhpgI+8h+C5vKEHbYMLzD
    I+8X8k8875blOp4HFM2R71DlHNrK8MAPtsmbuj61rUQFS4XLzgbqhLpsangYj5+7nUJr+TIayUJm
    TVMNJdY5Fzhs1M6ObwtjT1wiaWW22qgukUDQmAkOqSlFadKLcp15sv4A5r9GBMIFkM+QMvpjpq4T
    JMRn5AriNfuFoA8AabGvUjii2hao+pPHQQfjTRS1d3+hERp6vTsLjSn2V/k0+UNW/zoYAInfwpjM
    Vt8h9VcwJwt/EzEI3v2EEjYT7T/X91P70DNQSwECFAAKAAAACACyuCE2zxB9RfgAAADUAQAAIQAA
    AAAAAAAAAAAAAAAAAAAAZHVtcHMvc3Fsc2F2ZV8wMTAxMjAwN18yMzA1MTMuc3FsUEsFBgAAAAAB
    AAEATwAAADcBAAAAAA==
    .zip"
     
    UEsDBAoAAAAIALK4ITbPEH1F+AAAANQBAAAhAAAAZHVtcHMvc3Fsc2F2ZV8wMTAxMjAwN18yMzA1
    MTMuc3FsldBBa8IwFAfwe6Hf4d1UWNXNbYeJh67GrVjraCLs2Feb2drQhpgI+8h+C5vKEHbYMLzD
    I+8X8k8875blOp4HFM2R71DlHNrK8MAPtsmbuj61rUQFS4XLzgbqhLpsangYj5+7nUJr+TIayUJm
    TVMNJdY5Fzhs1M6ObwtjT1wiaWW22qgukUDQmAkOqSlFadKLcp15sv4A5r9GBMIFkM+QMvpjpq4T
    JMRn5AriNfuFoA8AabGvUjii2hao+pPHQQfjTRS1d3+hERp6vTsLjSn2V/k0+UNW/zoYAInfwpjM
    Vt8h9VcwJwt/EzEI3v2EEjYT7T/X91P70DNQSwECFAAKAAAACACyuCE2zxB9RfgAAADUAQAAIQAA
    AAAAAAAAAAAAAAAAAAAAZHVtcHMvc3Fsc2F2ZV8wMTAxMjAwN18yMzA1MTMuc3FsUEsFBgAAAAAB
    AAEATwAAADcBAAAAAA==
    Merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Le "juste pour ça" est un peu fort à mon avis. Tu te rend compte que ton code est :
    1. illisible
    2. buggé
    3. réinvente la roue

    Alors que ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $mail = new MaClasseQuiEnvoieDesMailsMime();
    $mail->setTo($email);
    $mail->setFrom($me);
    $mail->setSubject($subject);
    $mail->setBody($body);
    $mail->addAttachement($filename);
    $mail->send();
    est lisible, (ré)utilise du code stable, éprouvé, supporté et donc n'est pas buggé (ou alors il faut changer la classe pour une qui marche ou la modifier).
    De gentils développeurs se cassent la nénette pour décortiquer les rfc et nous faire des classes qui tournent, c'est pas pour rien


    Sinon pour ton problème tu dois mettre le nom du fichier après "filename=", et pas le contenu du fichier lui-même

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Merci à toi,
    Pour la qualité du code, je suis entièrement d'accord avec toi, pour info il n'est pas inventé de ma part je l'ai trouvé

    Maintenant ça marche, il fallait aussi que je concatène mieux les chaines.
    Programmer en objet c'est mieux mais ce qui me dérange c'est le poids des fichiers (jai déjà une librairie zip qui pèse lourd par rapport au reste des mes fichiers, et je voudrai minimiser la poids de mon script).

    Merci

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    En effet, on ne peut malheureusement pas tout avoir, un code maintenable et un code "léger".
    Pour info : PHPMailer ~= 80ko, htmlMimeMail ~= 73ko, Swift ~= 48ko

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

Discussions similaires

  1. [AC-2007] Problème d'ajout de pièces jointes dans une base de données access
    Par kek's dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/11/2011, 09h13
  2. [WD-2003] Ajout de pièces jointes avant envoi du mail
    Par korni184 dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/03/2011, 16h19
  3. Ajout de pièce jointe dans un mail
    Par Floriang33 dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2009, 02h44
  4. Envoi d'une piéce jointe dans un e-mail
    Par koKoTis dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 16/03/2009, 09h44
  5. Réponses: 1
    Dernier message: 09/06/2008, 11h42

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