Comment envoyer un mail HTML pré-rédigé ???

Le forum de l'Annuaire Francophone des Scripts CGI: CGI : Problème avec un des scripts de Scripts-fr: Comment envoyer un mail HTML pré-rédigé ???

Stephan

vendredi 23 mars 2001 - 17h19
Bonjour,

Je souhaite permettre aux internautes de
laisser leur adresse e-mail, afin qu'ils
puissent recevoir un mail HTML pré-rédigé.

J'ai essayé avec quelques CGI, mais il
n'apparait que le code source. La mise en
forme HTML n'est pas prise en compte.

Quelqu'un à déjà eu ce type de problème, voir
une solution peut-être ???

Merci !

Frédéric (Frédéric)

vendredi 23 mars 2001 - 22h54
Bonjour,

Il faut que le script permette d'envoyer des emails en HTML car les en tetes a envoyer pour des mails HTML ou texte sont différents.

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


Ajouter un message


Ceci est une zone publique. Si vous n'avez pas de compte, entrez votre nom dans le champ "Identificateur" et laissez le mot de passe vide. Votre adresse E-mail est facultative.
Identificateur :  
Mot de passe :
E-mail :
Poster "anonymement"