Bonjour à tous,

Après mainte recherche et beaucoup de test en local, je n'arrive pas à envoyer un mail avec un fichier joint ET mon texte au format html.

J'ai lu beaucoup d'article qui parlai d'un certain Boundary, chose que je comprend toujours pas d'ailleurs, alors j'arrive à envoyer un mail html avec des images, j'arrive à envoyer un mail avec un fichier joint, mais je n'arrive pas à faire les deux dans le même mail Smiley decu

du coup voilou mon bout de code qui envoi juste un fichier pdf et ne m'affiche pas mon message :


...
$boundary = "-----=".md5(uniqid(rand())); // le fameux boundary
$headers = "From:commandes@....com\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: application/pdf; name=\"DOC_THP_Star.pdf\"; boundary=\"$boundary\"\r\n"."\n";
$headers .= "Content-Transfer-Encoding: base64"."\n";
$headers .= "Content-Disposition:attachement; filename=\"DOC_THP_Star.pdf\""."\n\n";
$headers .= chunk_split(base64_encode(file_get_contents('/home/.../www/admin/doc/DOC_THP_Star.pdf')))."\n"; // encodage du pdf

$headers .= "Content-type: text/html; charset=iso-8859-1; boundary=\"$boundary\"\r\n";

$contenu_mail .= "<img src=\"http://www.....com/charte/bandeau_cuisson.jpg\" width=\"650px\" height=\"99px\" alt=\"...\" />";
$contenu_mail .= $_POST['contenu_mail']; //contenu rechercher sur la page d'avant, sans importance
$contenu_mail .= "--$boundary\r\n";

$subject = "... : envoi de votre commande $commande";

mail($to, $subject, $contenu_mail, $headers);

...



le contenu je le récupère avec un POST de la page d'avant, l'image et le pdf sont sur le serveur ftp qui héberge le site.
Du coup je suis pas sur d'avoir très bien compris ce "Boundary" qui doit être utilisé pour "séparés" le corps du mail et l'entête (dites moi si je me trompe)

D'avance merci.
Modifié par Loucas (01 Sep 2010 - 11:52)
Salut,

à essayer :
$boundary = "-----=".md5(uniqid(rand())); // le fameux boundary 
$headers = "From:machin@bidule.com\n"; 
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

$contenu_mail = "--" . $boundary . "\n";
$contenu_mail .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$contenu_mail .= "Content-Transfer-Encoding: 8bit\n\n";
$contenu_mail .= "Test texte \n\n";
$contenu_mail .= "--" . $boundary . "\n";
$contenu_mail .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$contenu_mail .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$contenu_mail .= "<html><head><title>Test</title></head><body><p>Test html</p></body></html>\n\n";
$contenu_mail .= "--" . $boundary . "\n";
$contenu_mail .= "Content-Type: application/pdf; name=\"test.pdf\"\n";
$contenu_mail .= "Content-Transfer-Encoding: base64\n";
$contenu_mail .= "Content-Disposition: attachment; filename=\"test.pdf\"\n\n";
$contenu_mail .= chunk_split(base64_encode(file_get_contents('test.pdf')))."\n"; // encodage du pdf
$contenu_mail .= "\n\n";
$contenu_mail .= "--" . $boundary . "--\n";

mail($to, $subject, $contenu_mail, $headers); 
Personnellement je ne m'embête plus avec ces questions et j'utilise phpmailer. Smiley cligne
Merci Heyoan, j'ai fait quelques essais avec ton code mais cela n'envoie pas le fichier joint.

Je voulais essayer de rester maitre de mon code, je pense que je vais me renseigner sur cette classe php_mailer.

Merci de ton aide Smiley lol
Loucas a écrit :
j'ai fait quelques essais avec ton code mais cela n'envoie pas le fichier joint.
Je l'avais pourtant testé. Smiley murf

Tu as bien modifié le nom et le chemin du pdf ?

Quoi qu'il en soit ce n'est pas bien important si tu regardes du côté de phpmailer. Smiley smile
j'ai sans doute zappé un truc, j'ai fait un test, ca marchai pas, ras le bol, je vais voir ce qui existe deja (je sais, je sais c'est mal Smiley langue ).

Merci de ton aide Smiley biggrin