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] file_get_contents, envoi de mail avec pièce jointe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut [Mail] file_get_contents, envoi de mail avec pièce jointe
    Bonjour,
    j'ai fait un formulaire avec la possibilité d'envoyer au maximum 3 fichiers (images)....
    Pour le type MIME je gère comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $nombre = sizeof($tab_fichier);
    for ($i = 0; $i <$nombre; $i++)
    {
       if($tab_fichier[$i]!=""){
       $path_parts = pathinfo($tab_fichier[$i]);
       $message .= 'Content-Type: image/'.$path_parts['extension'].'; name="'.$path_parts['basename'].'"'."\n";
       $message .= 'Content-Transfer-Encoding: base64'."\n";
       $message .= 'Content-Disposition:attachment; filename="'.$path_parts['basename'].'"'."\n\n";
       $message .= chunk_split(base64_encode(file_get_contents($path_parts['basename'])))."\n";
       }
    }
    $tabfichier[] contient les noms des fichiers.
    Mais lors de l'envoie du formulaire, je reçois bien le mail mais il n'y a pas de pièces jointes et j'ai :
    Content-Type: image/gif; name="icon_bug.gif"
    Content-Transfer-Encoding: base64
    Content-Disposition:attachment; filename="icon_bug.gif"

    Content-Type: image/gif; name="headbang.gif"
    Content-Transfer-Encoding: base64
    Content-Disposition:attachment; filename="headbang.gif"
    au format texte dans le corps du mail.
    Puis j'ai aussi l'erreur sur file_get_contents($path_parts['basename']) :
    Warning: file_get_contents(icon_bug.gif): failed to open stream
    Je voudrais savoir pourquoi je ne reçois les Content-xxxx du MIME en tant que texte dans le mail et l'erreur sur file_get_contents..

  2. #2
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    $message .= 'Content-Type: image/'.$path_parts['extension'].'; name="'.$path_parts['basename'].'"'."\n";
    Si j'ai un fichier .jpg avec ta façon ça fera image/jpg or c'est image/jpeg qui est correct.

    Puis j'ai aussi l'erreur sur file_get_contents($path_parts['basename']) :
    Il faut spécifier l'extension aussi, enfin normalement, je suis pas sur que ca marche sans aussi.


    Tu n'aurais pas oublier le "boundary" quelque part ?

  3. #3
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    $path_parts['basename'] l'extension est compris,
    mais est ce qu'il faut plutôt mettre le chemin du fichier avec ? nan
    j'ai mis un boundary, mais peut etre est ce un problème à ce niveau là
    j'ai mis un peu de * pour ne pas faire de pub lol

    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
     
    $sujetDest="Votre inscription sur *******";
    		$sujet="Une nouvelle iniscription pour ******* est arrivée";
    		$courriel="****@****.fr";
    		$message="";
    		$message="";
     
    		//-----------------------------------------------
            //PIECE JOINTE
            //-----------------------------------------------
    		$nombre = sizeof($tab_fichier);
    		for ($i = 0; $i <$nombre; $i++)
    		{
    			if($tab_fichier[$i]!=""){
    				$path_parts = pathinfo($tab_fichier[$i]);
    				$message .= 'Content-Type: image/'.$path_parts['extension'].'; name="'.$path_parts['basename'].'"'."\n";
    				$message .= 'Content-Transfer-Encoding: base64'."\n";
    				$message .= 'Content-Disposition:attachment; filename="'.$path_parts['basename'].'"'."\n\n";
    				$message .= chunk_split(base64_encode(file_get_contents($path_parts['basename'])))."\n";
    			}
    		}
     
     
     
    		 $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
    		 //-----------------------------------------------
     
    		 $headersCiage = 'From: '.$nom.'<'.$courriel.'>'."\n";
    		 $headersCiage .= 'MIME-Version: 1.0'."\n";
    		 $headersCiage .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
     
    	 // expédition du courriel de confirmation au client
    	 mail($email,$sujetDest,$messageDest,'From:'.$courriel);	
     
    	// expédition du courriel à Ciage
    	 mail($courriel,$sujet,$message,$headers);

  4. #4
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    Tu as en effet un petit probleme de boundary.

    Tu dois séparer toutes les parties de ton mail par une frontière (boundary).

    Va voir le dernier exemple ici : http://a-pellegrini.developpez.com/t...php/mail/#L3.5

  5. #5
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    Merci beaucoup
    j'ai essayé et en effet il y avais un petit probleme de boundary.
    cela à l'air de fonctionner mais j'ai un souci quand je reçois le mail , j'ai les pièces jointes mais lors de l'aperçu il n'y a pas d'image (genre un petit carré avec une croix rouge) cela voudrais dire qu'il n'a pas réussi à prendre les images ?

  6. #6
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    Es-tu sur d'avoir renseigner le bon chemin, la bonne extension ?

    Pourrais-tu essayer aussi avec fopen/fread au lieu de file_get_contents(). Je ne sait pas si ca change quelque chose.

    NB: Avec l'exemple sur le site, ca passe nikel sur Gmail mais notre amis Hotmail à du mal.

Discussions similaires

  1. [AC-2007] Error 2587 - SendObject - Envoi de courriels avec pièce-jointe via Access
    Par sindy7484 dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/06/2011, 11h20
  2. envoi d'email avec pièce jointe sap
    Par kitty2006 dans le forum SAP
    Réponses: 3
    Dernier message: 10/12/2010, 11h18
  3. [D6-Outlook] Envoi d'email avec pièces jointes
    Par pepito62 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 23/06/2010, 18h09
  4. Envoi de mail / nom du report PDF en pièce jointe
    Par flogw dans le forum Reports
    Réponses: 0
    Dernier message: 15/12/2008, 14h35
  5. [RegEx] [Formulaire]= problème d'envoi de formulaire avec pièces jointes
    Par lyamarin dans le forum Langage
    Réponses: 22
    Dernier message: 03/04/2007, 13h29

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