| Michel LO | mercredi 28 mars 2001 - 20h34 Le problème des mails en HTML est qu'il faut formatter le mail en MIME (multipart) pour que le logiciel d'email puisse reconnaitre ses petits. C'est un vrai travail de codage ! Le plus vite possible pour ne pas faire un roman : Après toutes les variables d'en tête pour sendmail (to, from etc...), on attaque le corps du message qui va être en plusieurs parties, séparées par un séparateur. par exemple, je définis le spéarateur comme $boundary="ceci_est_mon_separateur_de_parties_MI ME"; puis je définis la première partie (celle si jamais l'emailer ne comprend pas le html, il y en a encore plein !). je suppose que MAIL est le handle de sendmail. print MAIL "Content-type: multipart/alternative;\n"; print MAIL " boundary=\"$boundary\"\n\n"; (noter les deux espaces avant le mot boundary) là je printe ce que je veux en format texte normal, puis je passe à la partie html print MAIL "--$boundary\n"; print MAIL "Content-type: text/html; charset=\"ISO-8859-1\"\nContent-Transfer-Encoding : quoted-printable\n\n"; Ensuite, on peut créer les messages en texte normal avec les minuscules accentuées sous forme é etc... ATTENTION : il reste la dernière manip qui consiste traduire les signes = en =3D pour être compatible avec le MIME quoted printable. Si le corps est dans $MB, il faut passer sur le message body avec $mb =~ s/=/=3D/g; Enfin, il faut terminer le MIME : print MAIL "--$boundary\n--"; Attention, bien noter que s'il y a une erreur à un moment (y compris le boundary de fin), rien ne s'affiche. Noter les -- avant et apès le boundary, ils ont une signification. pour plus d'informations, vois les RFC qui régissent le MIME (il y en a deux dont je ne sais plus les numéros). Il existe aussi des modules qui simplifient, mais je ne sais plus où. Michel LO |