fonction mail() pour php : probleme fichiers joints

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Dharius, 28 Février 2008.

  1. Dharius
    Dharius WRInaute impliqué
    Inscrit:
    6 Avril 2005
    Messages:
    741
    J'aime reçus:
    0
    Bonjour,

    Voilà, j'ai une fonction qui marche bien pour envoyer des mails. J'ai voulu ajouter des fichiers joints (les images contenues dans le corps du texte), mais avec cette modif, je recois QUE des fichiers joints, dont le contenu du mail en piece jointe (appelés Partie 1.X.txt et Partie 1.X+1.html)...

    Si quelqu'un peut m'aider... C'est assez balèze, je sais pas si quelqu'un saura, mais on ne sait jamais ! Ou si vous connaissez une class PHP compatible Gmail qui fonctionne bien et qui joint les images contenues dans la page...

    Voici le code en question

    Code:
    
    function email($destinataire, $sujet , $messtxt, $messhtml,$mailfrom="noreply@votresite.com",$namefrom="votresite.com") 
    { 
    	global $site_url;
    		
    	$boundary = "_".md5 (uniqid (rand()));
    		
    	$new_message = get_image($messhtml, $boundary); // je récupère les images du texte via une autre fonction et je les change du style <img src="cid:$bildID" border=0>
    	$messhtml = $new_message["texte"];
    		
    	$entete = "MIME-Version: 1.0\n";
    	$entete .= "From:$namefrom <robot@mail.votresite.com>\n"; 
    	$entete .= "X-Sender: <www.votrsite.com>\n";
    	$entete .= "X-Mailer: PHP\n";
    	$entete .= "X-auth-smtp-user: webmaster@votresite.com \n";
    	$entete .= "X-abuse-contact: abuse@votresite.com \n";
    	$entete .= "Reply-to: $namefrom <$mailfrom>\n";
    	
    
    	// C'EST CETTE PARTIE AJOUTEE QUI JOINT LES FICHIERS ET POSE PROBLEME
    	if(count($new_message["header"])>0)
    	 {
    		$entete .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"$boundary\"\n\n";
    		$entete .= "--" . $boundary . "\n"; 
         for($i=0;$i<count($new_message["header"]);$i++) $entete .= $new_message["header"][$i]; // *1
    		$entete .= "\n\n"; 
    	}
    		
    	$message .= "--" . $boundary . "\n"; 
    	$message .= "This is a multi-part message in MIME format.\n\n"; 
    	$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; 
    	$message .= "Content-Transfer-Encoding: quoted-printable\n\n"; 
    	$message .= $messtxt; 
    	$message .= "\n\n"; 
    	$message .= "--" . $boundary . "\n"; 
    	$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
    	$message .= "Content-Transfer-Encoding: quoted-printable\n\n"; 
    	$message .= str_replace("=","=3D",$messhtml); 
    	$message .= "\n\n"; 
    				
    	return @mail($destinataire, $sujet, $message, $entete); 
    }
    email("test@test.com","test 3",strip_tags(nl2br($contents1)),$contents1,$lemail,$lauteurl);
    
    
    *1 sont sous la forme

    Code:
    $header = "--" . $boundary . "\n";
    $header .= "Content-Type: image/gif";\n name=\"nom de l'image\"\n";
    $header .= "Content-Transfer-Encoding: base64\n";
    $header .= "Content-ID: <$bildID>\n\n";
    $header .= chunk_split(base64_encode(fread(fopen($fichier,"rb"),filesize($fichier))),72)."\n\n";
    
    [/code]
     
  2. RomsIW
    RomsIW WRInaute passionné
    Inscrit:
    25 Mai 2004
    Messages:
    1 038
    J'aime reçus:
    0
    il est temps de se mettre à PHPMailer..

    essaie d'inverser ces deux lignes
    Code:
     $entete .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"$boundary\"\n\n";
          $entete .= "--" . $boundary . "\n"; 
     
  3. Dharius
    Dharius WRInaute impliqué
    Inscrit:
    6 Avril 2005
    Messages:
    741
    J'aime reçus:
    0
    Ha.. cette fois tou est dans le contenu du mail mais sous la forme :

    Code:
    --_5619e0ceb433f912801d9c6a8f6c278f
    Content-Type: multipart/related; type="multipart/alternative"; boundary="_5619e0ceb433f912801d9c6a8f6c278f"
    
    --_5619e0ceb433f912801d9c6a8f6c278f
    Content-Type: image/gif;
     name="images/logo_chine.gif"
    Content-Transfer-Encoding: base64
    Content-ID: <120427978047c7d9e406020>
    
    R0lGODlh4wBJAIflADY2NoKCgrICArpERsLCws6Cg8diY8ympsAmJuLi4tRDRtpkZduCg8U2
    ONqmproSFubCwtRSVNhydtq0tNqamsIZHM02NuLT08ooKcqXl7pSUsJ0ePLy8soKDt5SUl5e
    XrUOD9RKTdZucOuys76+vtl6e8o+P9LS0rkeHuCKjuelpumWmaKios6Oj8MuMtNaXvPS08py
    cvji4sZCRt5iYvLExOq6vroaG8MeIM4uMs1SU91KTOeqq7YGCtPGxtJjZM2ystI4Os6ens5y
    dshKS85dX0pKSsIuLrpCQt56fvba2sYmJ9JaWt2envr6+nJyctKMkJKSkt+Kit90droOD+y6
    uuCSlPrs7M1aWtpER74UF9pSVM+2ttY/QemenrKysuBmavLOz8oiJtpOUtFqatOentSGiMIq
    Lurq6tpmauKCgsY6PubMzNq+v8o6Ps0uLsp9f+Jwcuq2utZ+gtra2u6kptpeYvPW1sYiJtIy
    NspWWt5OTu6urrkKDNbKytWurkJCQmpqalZWVoqKisrKyuba2qqqqnp6epqamt9aXD4+PsaK
    iuKuruK6umZmZlJSUta+vrq6us7Cwu7i4u7S0taWmPzy8t7S0sY/QOa+vtKqreKZmsq+vvPK...
    
    --_5619e0ceb433f912801d9c6a8f6c278f
    This is a multi-part message in MIME format.
    
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    
    
    MON CONTENU TEXTE...
    
    
     
  4. RomsIW
    RomsIW WRInaute passionné
    Inscrit:
    25 Mai 2004
    Messages:
    1 038
    J'aime reçus:
    0
    je me demande ce que "This is a multi-part message in MIME format. " fout là.. du moins je n'en vois pas l'utilité, essaie sans ..

    par ailleurs le name="image" doit se trouver sur la même ligne que Content-Type: image/gif; au dessus
     
  5. Dharius
    Dharius WRInaute impliqué
    Inscrit:
    6 Avril 2005
    Messages:
    741
    J'aime reçus:
    0
    Bon voila...

    il faut bien faire :

    Code:
    $entete .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"$boundary\"\n\n"; 
    $entete .= "--" . $boundary . "\n"; 
    
    Cependant les images ne s'affichent tjrs pas (pas liées...), alors pour "débuggé" et voir le code, de réinverse ces ligne, ce qui m'affiche bien le mail en remplacant les images par (par exemple)

    Code:
    <img src="cid:120428290347c7e617c1d40" border=0>
    avec dans les headers le code correspondant :


    Code:
    
    --_41baa2f95a11048881b178362ff976e6
    Content-Type: image/gif;name="120428290347c7e617c1d40.gif"
    Content-Transfer-Encoding: base64
    Content-ID: <120428290347c7e617c1d40>
    
    R0lGODlhjwAdAPcAAP///////+YiOvrT2PvY3PB6ifWnsO9wgPB9i+cvRvaxufOXoupJXetO
    Yek8Ufzl6P76+vWkru1jdP3v8epBVvnIzuxZa+YlPPi+xfrV2vaut/zo6vzi5vKKl/nL0f7y
    8+tRZOg0SucnP+1eb/jBx/rQ1exbbexWaPGFkvvg4/aste5mdvOSnuk/U/B4hv/8/fvd4fe7
    w+cqQf3q7PnGzPa0vOpGWucsQ+5oefSfqetMX/Wps/KPm+9zgu9tfegySPShrOxTZve5wPnO
    0+1gcvGAjek5T/GHlPKNmf3t7/73+Og3TfjDyve2vu91hP719vOUoPGCkPSapepEWO5re/vb
    3///////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////6QAtf8A/8BFp3gBuf//////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEAAAAALAAAAACPAB0AAAj/AAEMYCCgoMGD
    CBMqXMiwocOHECNKnChAxwAAHGRYoDGgo8ePIEOKHEmypMmTKFOqVEnDwg8OEhgoCUCzps2b
    OHPq3Mmzp8+fQIMKDaCkhRMBKoYqXcq0qVOnKmQIIPC0qtWrWIESKEg1q9evYJlunRq2rNmz
    N8d2Rcu27VW1buPKXQp3rt27O+vaxICgL4IiNGp+QNDEpgq/fZMGQOxXQQAUQ2rSkKDDQoSZ
    ARQkTcL4coAHjBFECECAMZIZOTkgCFyTBQabCkbnBJ0kAIvQtTtErqnCsU29NRe0iEDchYDC
    ASK0MGLTiWXiLGR0SE78hxPiHgL88I3kBwsayqnQ/0Tg5LMAJNCXSCAtIAdx4q8xyHgfgUEL
    zDZRGLFgk8ECmwisl9NWDwTAABX0eWaEbzQ5gUBaXOG0wAnN8RcACCos8VqDD9aUww82GSEb
    TdsFMIQAuwVQhQCvkWfeWjQIMMNWH+CEAYg1JSEAazUp8QMGAlRRk38ACogTgQb+h9OCzXVY
    E3A0TZgffwTIkAQKRjpoEwsthDiido4FeBMH45X3AFk0DSDAAzTaiCNNHKB4UxPMSYDCkEqO
    ZySEBRK5JIMBaPlbhDctYFFHCvwwGgrirUhmoM9F4IQMitEkok0lWnBnTi6e2URHNJygA3sO
    +hWZfO91YMSeNEkwXRM/YP/mp546IckACIhJYSmggj5JqE0LHNQCEkT9SJMO0wXKAHk/gCCk
    l5g6pqlOnR70gwRkbuXee2TK1xcDJd50ppA+KjbrYqz62ieC723IZE290gRlAFLOiVCsgXZY
    xQ/EQltTiU6ItxeZ1a7la4033VgTZfhFiRAINFnAAoACH7lmkjm1UGkAdkKIJrAU3iRBETnK
    4FivCgiQXU2X/uuYfAXSlMQPSRVsMcJ7vTmzkzS1kIOvAwRa8YXJyvxDbVvVdm5N07L8JXsf
    BxdyTWemCGm+Nklwn9PRRswABh/QAAIIM9kMIUceUaVwTSmvHIAHAtRWkw4uBBDjAh2hIIPB
    ARiu0QEBLnRpYBEg1RhVBB1NGrOvUdOkQt02NcGqBzrMgESen2G4MHIRb6hEB0sI8AMCci9A
    7Aw6PGoTBzq07jp/HlhYkwsVL8BzACpYMFMTBAkAAo+StSDAFLtR4brrKytXkAVWy/srXtDj
    NW/01Lc1ffXYl3V99txntX334D+1FaXhl59VVE5sbf76TRXlBAc/bLTS/PTXb//9+IPqEgcC
    9U7R/wAMoAAH+D8GXCQgADs=
    

    EN entier ca donne à peut près ca :
    Code:
    
    Content-Type: multipart/related; type="multipart/alternative"; boundary="_41baa2f95a11048881b178362ff976e6"
    --_41baa2f95a11048881b178362ff976e6
    
    --_41baa2f95a11048881b178362ff976e6
    Content-Type: image/gif;name="120428290347c7e617c1d40.gif"
    Content-Transfer-Encoding: base64
    Content-ID: <120428290347c7e617c1d40>
    
    R0lGODlhjwAdAPcAAP///////+YiOvrT2PvY3PB6ifWnsO9wgPB9i+cvRvaxufOXoupJXetO
    Yek8Ufzl6P76+vWkru1jdP3v8epBVvnIzuxZa+YlPPi+xfrV2vaut/zo6vzi5vKKl/nL0f7y
    8+tRZOg0SucnP+1eb/jBx/rQ1exbbexWaPGFkvvg4/aste5mdvOSnuk/U/B4hv/8/fvd4fe7
    w+cqQf3q7PnGzPa0vOpGWucsQ+5oefSfqetMX/Wps/KPm+9zgu9tfegySPShrOxTZve5wPnO
    0+1gcvGAjek5T/GHlPKNmf3t7/73+Og3TfjDyve2vu91hP719vOUoPGCkPSapepEWO5re/vb
    3///////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////6QAtf8A/8BFp3gBuf//////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEAAAAALAAAAACPAB0AAAj/AAEMYCCgoMGD
    CBMqXMiwocOHECNKnChAxwAAHGRYoDGgo8ePIEOKHEmypMmTKFOqVEnDwg8OEhgoCUCzps2b
    OHPq3Mmzp8+fQIMKDaCkhRMBKoYqXcq0qVOnKmQIIPC0qtWrWIESKEg1q9evYJlunRq2rNmz
    N8d2Rcu27VW1buPKXQp3rt27O+vaxICgL4IiNGp+QNDEpgq/fZMGQOxXQQAUQ2rSkKDDQoSZ
    ARQkTcL4coAHjBFECECAMZIZOTkgCFyTBQabCkbnBJ0kAIvQtTtErqnCsU29NRe0iEDchYDC
    ASK0MGLTiWXiLGR0SE78hxPiHgL88I3kBwsayqnQ/0Tg5LMAJNCXSCAtIAdx4q8xyHgfgUEL
    zDZRGLFgk8ECmwisl9NWDwTAABX0eWaEbzQ5gUBaXOG0wAnN8RcACCos8VqDD9aUww82GSEb
    TdsFMIQAuwVQhQCvkWfeWjQIMMNWH+CEAYg1JSEAazUp8QMGAlRRk38ACogTgQb+h9OCzXVY
    E3A0TZgffwTIkAQKRjpoEwsthDiido4FeBMH45X3AFk0DSDAAzTaiCNNHKB4UxPMSYDCkEqO
    ZySEBRK5JIMBaPlbhDctYFFHCvwwGgrirUhmoM9F4IQMitEkok0lWnBnTi6e2URHNJygA3sO
    +hWZfO91YMSeNEkwXRM/YP/mp546IckACIhJYSmggj5JqE0LHNQCEkT9SJMO0wXKAHk/gCCk
    l5g6pqlOnR70gwRkbuXee2TK1xcDJd50ppA+KjbrYqz62ieC723IZE290gRlAFLOiVCsgXZY
    xQ/EQltTiU6ItxeZ1a7la4033VgTZfhFiRAINFnAAoACH7lmkjm1UGkAdkKIJrAU3iRBETnK
    4FivCgiQXU2X/uuYfAXSlMQPSRVsMcJ7vTmzkzS1kIOvAwRa8YXJyvxDbVvVdm5N07L8JXsf
    BxdyTWemCGm+Nklwn9PRRswABh/QAAIIM9kMIUceUaVwTSmvHIAHAtRWkw4uBBDjAh2hIIPB
    ARiu0QEBLnRpYBEg1RhVBB1NGrOvUdOkQt02NcGqBzrMgESen2G4MHIRb6hEB0sI8AMCci9A
    7Aw6PGoTBzq07jp/HlhYkwsVL8BzACpYMFMTBAkAAo+StSDAFLtR4brrKytXkAVWy/srXtDj
    NW/01Lc1ffXYl3V99txntX334D+1FaXhl59VVE5sbf76TRXlBAc/bLTS/PTXb//9+IPqEgcC
    9U7R/wAMoAAH+D8GXCQgADs=
    
    
    --_41baa2f95a11048881b178362ff976e6
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    
    ya une image ici mais pas en format texte...
    
    
    --_41baa2f95a11048881b178362ff976e6
    Content-Type: text/html; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    
    <html>
    <head></head>
    <body>
    
    <img src="cid:120428290347c7e617c1d40" border=0>
    
    </body>
    </html>
    
    
    Voilà.. sinon sous ton conseil, j'ai corrigé pour les 2 remarques[/code]
     
Chargement...
Similar Threads - fonction mail() php Forum Date
En tête html via la fonction mail() de php Développement d'un site Web ou d'une appli mobile 20 Mars 2012
envoi email avec fonction mail() php sécurité ? Développement d'un site Web ou d'une appli mobile 3 Février 2010
Envoi d'e-mail via la fonction mail() de php Développement d'un site Web ou d'une appli mobile 24 Octobre 2008
probleme avec boucle While et fonction php mail() Développement d'un site Web ou d'une appli mobile 25 Octobre 2007
La fonction mail() avec php n'arrive plus à délivrer 1 email Administration d'un site Web 3 Janvier 2007
php: fonction mail(), compatibilité yahoo, hotmail et autres Développement d'un site Web ou d'une appli mobile 28 Octobre 2005
Emails html et fonction mail() de php Développement d'un site Web ou d'une appli mobile 10 Septembre 2005
[SOLUTION] Mail via fonction PHP mail() Administration d'un site Web 7 Janvier 2005
fonction mail() de php et Hotmail et consors Administration d'un site Web 17 Septembre 2004
Fonction mail() et signature DKIM Développement d'un site Web ou d'une appli mobile 18 Mai 2019
Petit soucis de lien dans fonction mail() Développement d'un site Web ou d'une appli mobile 6 Mars 2011
mail() ne fonctionne pas en interne Administration d'un site Web 22 Avril 2010
Problème fonction mail() : email envoyé 3 fois. Développement d'un site Web ou d'une appli mobile 27 Avril 2009
Utiliser la fonction mail() avec xampp Développement d'un site Web ou d'une appli mobile 1 Août 2008
Problème de style avec la fonction mail() [résolu] Développement d'un site Web ou d'une appli mobile 17 Octobre 2007
problème avec le paramètre from de la fonction mail() Développement d'un site Web ou d'une appli mobile 24 Septembre 2007
Envoyer un mail au format HTML avec la fonction email() Développement d'un site Web ou d'une appli mobile 13 Septembre 2007
Fonction mail() , IP reverse , serveur dédié et hotmail Administration d'un site Web 11 Septembre 2006
Alternative a la fonction mail() Développement d'un site Web ou d'une appli mobile 2 Août 2006
fonction mail() et AOL Administration d'un site Web 5 Décembre 2005