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 :

fonction mail() avec pièce jointe


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut fonction mail() avec pièce jointe
    Bonjour,

    je souhaiterais envoyer un .pdf en pièce jointe dans un mail en utilisant la fonction mail() de php

    je reçois bien un mail ayant des fichiers en pièces jointes mais pas mon .pdf . J'ai lu sur différents sites que c'était lié à un problème d'encodage mais je ne vois pas trop quoi faire.

    Voici mon code :

    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
     
    if($nni!="")
    {
    echo "hello world";
    $boundary = "-----=".md5(uniqid(rand()));
    $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 multipart/mixed.\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 .= "test";
    $msg .= "\r\n";
     
    $attachment = fread($fp, filesize('C:\avancement\\'.$nni.'.pdf'));
    fclose($fp);
     
    $attachment = chunk_split(base64_encode($attachment));
     
    //$attachment = $fp;
     
     
    $msg .= "--$boundary\r\n";
    $msg .= "Content-Type: $type2; name=\"$attachment\"\r\n";
    $msg .= "Content-Transfer-Encoding: base64\r\n";
    $msg .= "Content-Disposition: inline; filename=\"$attachment\"\r\n";
    $msg .= "\r\n";
    $msg .=$attachment . "\r\n";
    $msg .= "\r\n\r\n";
    $msg .= "--$boundary--\r\n";
     
     
    $destinataire = $email_dest;
    $dest2 = $email_manag;
    $expediteur   = "moi";
    //$reponse      = $expediteur;
    echo "Mail envoyé à $destinataire";
     
    mail($destinataire, "test", $msg,
         "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
     
    }
    Je débute dans l'utilisation de cette fonction, et je ne vois pas trop quoi faire pour arranger ça.

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    J'ai repris un code plus clair :

    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
         //----------------------------------------------- 
         //DECLARE LES VARIABLES 
         //----------------------------------------------- 
    
         $email_expediteur='valentine.bobinet@edf.fr'; 
         $email_reply='bobinet_valentine @laposte.net'; 
         $message_texte='Bonjour,'."\n\n".'Voici un message au format texte'; 
    
         $message_html='<html> 
         <head> 
         <title>Titre</title> 
         </head> 
         <body>Test de message</body> 
         </html>'; 
    
         //----------------------------------------------- 
         //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML 
         //----------------------------------------------- 
    
         $frontiere = '-----=' . md5(uniqid(mt_rand())); 
    
         //----------------------------------------------- 
         //HEADERS DU MAIL 
         //----------------------------------------------- 
    
         $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n"; 
         $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; 
         $headers .= 'MIME-Version: 1.0'."\n"; 
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
    
         //----------------------------------------------- 
         //MESSAGE TEXTE 
         //----------------------------------------------- 
         $message = 'This is a multi-part message in MIME format.'."\n\n"; 
    
         $message .= '--'.$frontiere."\n"; 
         $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
         $message .= $message_texte."\n\n"; 
    
         //----------------------------------------------- 
         //MESSAGE HTML 
         //----------------------------------------------- 
         $message .= '--'.$frontiere."\n"; 
    
         $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
         $message .= $message_html."\n\n"; 
    
         $message .= '--'.$frontiere.'--'."\n"; 
    
         //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
    
         $message .= 'Content-Type: image/jpeg; name="'.$nni.'.pdf"'."\n"; 
         $message .= 'Content-Transfer-Encoding: base64'."\n"; 
         $message .= 'Content-Disposition:attachement; filename="'.$nni.'.pdf"'."\n\n"; 
    
         $message .= chunk_split(base64_encode(file_get_contents('c:\avancement\\'.$nni.'.pdf')))."\n"; 
    
         if(mail($destinataire,$sujet,$message,$headers)) 
         { 
              echo 'Le mail a été envoyé'; 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
         }
    et lorsque j'execute j'obtiens cette erreur :

    Warning: mail() [function.mail]: SMTP server response: 503 No recipient(s). in C:\wamp\www\avancement\fichier_xls.php on line 197

    la ligne 197 correspond à le ligne en gras et italique dans la partie code.
    J'ai configurer mon smtp dans php.ini, mais je tourne en local cela peut-il être lié?

    merci beaucoup

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    La variable $destinataire n'est pas déclaré et n'est pas une adresse mail valide .

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Ah oui exacte

    Je reçois bien un mail mais pas de pièce jointe à l'horizon...

    Comme c'est un fichier pdf que j'envoie j'ai modifié cette partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
     
         $message .= 'Content-Type: application/pdf; name="'.$nni.'.pdf"'."\n"; 
         $message .= 'Content-Transfer-Encoding: base64'."\n"; 
         $message .= 'Content-Disposition:attachement; filename="'.$nni.'.pdf"'."\n\n"; 
     
         $message .= chunk_split(base64_encode(file_get_contents('c:\avancement\\'.$nni.'.pdf')))."\n";
    mais toujours pas de fichier...

    Merci du coup de pouce

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Il y a du mieux

    Je reçois bien la pièce jointe, mais il ne reconnait pas le format du fichier il me demande de choisir le programme pour l'ouvrir.
    On utilise lotus notes la où je travaille, ma question c'est est-ce que c'est lié au code ou à lotus le fait qu'il ne reconnaisse pas l'extension?

    Lorsque je vais chercher acrobat pour ouvrir le fichier il s'ouvre correctement et en clair, donc plus de soucis de ce côté là.

    Merci.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    J'ai trouvé, il y avait un problème d'association entre le fichier et lotus merci.

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

Discussions similaires

  1. fonction mail avec pièce jointe
    Par sitadom39 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 03/01/2014, 15h49
  2. Fonction mail avec pièce jointe
    Par yamatoshi dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2010, 21h52
  3. Envoie mail avec pièce jointe
    Par Juniora dans le forum Access
    Réponses: 3
    Dernier message: 03/04/2006, 14h24
  4. [VB]Bp envoie mail avec piéce jointe
    Par jm1213 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/02/2006, 20h55
  5. [Mail] Fonction mail() et pièce jointe
    Par allyson dans le forum Langage
    Réponses: 16
    Dernier message: 09/11/2005, 15h05

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