[Mail] Format encode d'un texte HTML

Format encode d'un texte HTML [Mail] - PHP - Programmation

Marsh Posté le 23-11-2003 à 16:20:25    

Je suis en train de concevoir une petit webmail spécialisé pour les adhérents d'un association.
Je me pose des question quant au format d'encodage de l'email à adopter. Mon email sera en HTML.
 
quoted-printable ou base64? sachant que base64 est plus simple pour moi à gérer j'ai juste à faire chunk_split(base64($msg)).
 
Quel est le meilleur, celui qui sera lu par le plus grand nombre de logiciel de messagerie?
 
Merci d'avance.

Reply

Marsh Posté le 23-11-2003 à 16:20:25   

Reply

Marsh Posté le 23-11-2003 à 18:25:57    

Heu le base64 c'est juste pour les attachements, non ? Pour le contenu du mail tu mets juste le code HTML il me semble.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-11-2003 à 18:43:22    

base64 c'est pour les attachements en effet mais je viens de lire qu'il était tout à fait possible d'encoder de meme un message en html. En tout cas, Outlook arrive bien à le lire mais je sais pas ce que ça donne avec d'autres genre Eudora.
 
Envoyer le contenu en html ça marche mais je rencontre des problèmes de "tronquage de mail" avec de très gros mail.  
 
Je croyais que cela venait du fait qu'il fallait mettre des retours à la ligne (\n) le plus souvent possible mais meme en le faisant, mon email est souvent tronqué ce qui m'énerve.
 
Je me suis dit que c'est parce que le message devait être encodé soit en quoted-printable ou en base64.
Pour quoted-printable ça consiste à remplacer ts les caractères spéciaux par une représentation style =3D par ex mais c u peu galère comparé à base64.

Reply

Marsh Posté le 24-11-2003 à 00:12:13    

Pour l'envoi de mails, j'ai développé K-ML. Si tu veux un truc tout fait avec le développeur dispo en cas de problèmes, ça peut être une solution.

Reply

Marsh Posté le 24-11-2003 à 08:47:07    

Reply

Marsh Posté le 24-11-2003 à 10:22:40    

Kyle_Katarn a écrit :

Pour l'envoi de mails, j'ai développé K-ML. Si tu veux un truc tout fait avec le développeur dispo en cas de problèmes, ça peut être une solution.


 
Merci mais je préfère faire mon propre mailer (un peu par fierté je l'avoue  :D ) car en fait, il ne s'agit pas d'un mailer normal mais qqch de spécifique et puis j'aime bien comprendre ce que je fais (niveau maintenance c plus simple pour moi).
 
Par contre, je suis preneur de tuyau pour les méthodes d'encodage de mail.  ;)

Reply

Marsh Posté le 24-11-2003 à 10:54:11    

perso, moi j'ai fait ça...
(j'été jeune quand j'ai fait ça, alors pas de remarque sur le code hein! :o .. d'ailleur ça me fait penser qu'il faut que je la remasterise un jour.. [:meganne])
 

Code :
  1. //
  2. //Envoi un email en html, avec possibilité d'y attacher un fichier.
  3. //
  4. function send_mail($to, $sujet, $message, $from, $fichier = null, $typemime = null, $nom = null, $reply = null, $date = true)
  5. {
  6.  //Pour le type mime de l'attachement :
  7.  //
  8.  //pour un message :
  9.  // message/rfc822
  10.  // message/partial
  11.  // message/external-body
  12.  //Text :
  13.  // text/plain
  14.  // text/richtext
  15.  //Image :
  16.  // image/gif
  17.  // image/jpeg
  18.  //Audio :
  19.  // audio/basic
  20.  //Video :
  21.  // video/mpeg
  22.  //Application :
  23.  // application/octet-stream
  24.  // application/postscript
  25.  $reply  = $reply?$reply:$from;
  26.  $typemime = $typemime?$typemime:"image/jpeg";
  27.  $nom  = $nom?$nom:"fichier";
  28.  $date  = $date?date("l j F Y, G:i" ):"0 0 0 0, 0:0";
  29.  //génére un identifiant unique de 32 caractères (32 caractères je crois..) (voir nexen, arf)
  30.  $lim1 = "_parties_".md5(uniqid(rand()));
  31.  $lim2 = "_parties_".md5(uniqid(rand()));
  32.  //message en texte bidon pour les navigateurs qui n'acceptent pas le HTML
  33.  $texte_simple =
  34.  "This is a multi-part message in MIME format.\n\n".
  35.  "------=$lim1\n".
  36.  "Content-Type: multipart/alternative;\n".
  37.  "\tboundary=\"----=$lim2\"\n\n".
  38.  "------=$lim2\n".
  39.  "Content-Type: text/plain; \tcharset=\"US-ASCII\"\n".
  40.  "Content-Transfer-Encoding: quoted-printable\n\n".
  41.  strip_tags(eregi_replace("<br />", "\n",$message))."\n\n";
  42.  //message en html original
  43.  $texte_html =
  44.  "------=$lim2\n".
  45.  "Content-Type: text/html; charset=\"US-ASCII\"\n".
  46.  "Content-Transfer-Encoding: quoted-printeble\n\n".
  47.  $message."\n\n\n------=$lim2--\n";
  48.  //attachement du message
  49.  if($fichier)
  50.  {
  51.   $f   = fopen($fichier,"r" );
  52.   $contenu = fread($f,filesize($fichier));
  53.   fclose($f);
  54.   //formatte les données pour suivre la norme RFC 2045 (voir nexen aussi)
  55.   $contenu = chunk_split(base64_encode($contenu));
  56.   $attachement =
  57.   "------=$lim1\n".
  58.   "Content-Type: $typemime; name=\"$nom\"\n".
  59.   "Content-Transfer-Encoding: base64\n".
  60.   "Content-Disposition: attachment; filename=\"$nom\"\n\n$contenu\n\n\n------=$lim1\n";
  61.  }
  62.  else
  63.   $attachement = "";
  64.  //fin du message
  65.  $mail_mime =
  66.  "Date: $date\n".
  67.  "MIME-Version: 1.0\n".
  68.  "Content-Type: multipart/mixed;\n".
  69.  " boundary=\"----=$lim1\"\n\n";
  70.  return @mail($to,$sujet,$texte_simple.$texte_html.$attachement,"Reply-to: $reply\nFrom: $from\n".$mail_mime);
  71. }


 
 
en me basant principalement sur les type mime...
 
ici y a pas mal d'infos mais c'est un peu le foutoir :
 
http://www.cru.fr/JRES95/actes/tutoriaux/mime.html
 
 :)


---------------
yvele n'est plus.
Reply

Marsh Posté le 24-11-2003 à 11:50:56    

Bizarre, j'ai fait comme ça mais je me retrouve des fois avec un mail tronqué (manque des lettres) comme si le mail était trop gros (pourtant ya quelques lignes).
 
Ah ou alors ça vient ptete du charset, moi j'ai mis le iso-8859 ou un truc comme ça (je l'ai pas en tete) mais ça parait bizarre.

Reply

Marsh Posté le 24-11-2003 à 12:13:09    

heu y a pas d'iso-8859
il y a iso-8859-1 à iso-8859-15
pour les caractères utilisés en français on utilise les variantes -1, -9 (ajoute le ?) et -15 (ajoute l'euro)
 
http://babel.alis.com:8080/codage/ [...] iso.fr.htm


Message édité par antp le 24-11-2003 à 12:20:53

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-11-2003 à 13:46:38    

c'est possible, j'ai pas le truc sous les yeux, c'est chez moi :D
Merci pour l'explication, ça me sera utile pout autre chose (support de l'euro par ex).

Reply

Marsh Posté le 24-11-2003 à 13:46:38   

Reply

Marsh Posté le 30-11-2003 à 02:12:29    

up! car je suis tjrs à la recherche de pourquoi mon mail avec pièce jointe est tronqué!

Reply

Marsh Posté le 30-11-2003 à 15:33:28    

Va voir la classe déjà toute développée PHPmailer  
 
http://phpmailer.sourceforge.net/
 
a+

Reply

Marsh Posté le 18-02-2004 à 09:01:19    

Mr yvele a écrit :

perso, moi j'ai fait ça...
(j'été jeune quand j'ai fait ça, alors pas de remarque sur le code hein! :o .. d'ailleur ça me fait penser qu'il faut que je la remasterise un jour.. [:meganne])
 

Code :
  1. //
  2. //Envoi un email en html, avec possibilité d'y attacher un fichier. //
  3. function send_mail($to, $sujet, $message, $from, $fichier = null, $typemime = null, $nom = null, $reply = null, $date = true)
  4. {
  5.  //Pour le type mime de l'attachement :
  6.  //
  7.  //pour un message :
  8.  // message/rfc822
  9.  // message/partial
  10.  // message/external-body
  11.  //Text :
  12.  // text/plain
  13.  // text/richtext
  14.  //Image :
  15.  // image/gif
  16.  // image/jpeg
  17.  //Audio :
  18.  // audio/basic
  19.  //Video :
  20.  // video/mpeg
  21.  //Application :
  22.  // application/octet-stream
  23.  // application/postscript
  24.  $reply  = $reply?$reply:$from;
  25.  $typemime = $typemime?$typemime:"image/jpeg";
  26.  $nom  = $nom?$nom:"fichier";
  27.  $date  = $date?date("l j F Y, G:i" ):"0 0 0 0, 0:0";
  28.  //génére un identifiant unique de 32 caractères (32 caractères je crois..) (voir nexen, arf)
  29.  $lim1 = "_parties_".md5(uniqid(rand()));
  30.  $lim2 = "_parties_".md5(uniqid(rand()));
  31.  //message en texte bidon pour les navigateurs qui n'acceptent pas le HTML
  32.  $texte_simple =
  33.  "This is a multi-part message in MIME format.\n\n".
  34.  "------=$lim1\n".
  35.  "Content-Type: multipart/alternative;\n".
  36.  "\tboundary=\"----=$lim2\"\n\n".
  37.  "------=$lim2\n".
  38.  "Content-Type: text/plain; \tcharset=\"US-ASCII\"\n".
  39.  "Content-Transfer-Encoding: quoted-printable\n\n".
  40.  strip_tags(eregi_replace("<br />", "\n",$message))."\n\n";
  41.  //message en html original
  42.  $texte_html =
  43.  "------=$lim2\n".
  44.  "Content-Type: text/html; charset=\"US-ASCII\"\n".
  45.  "Content-Transfer-Encoding: quoted-printeble\n\n".
  46.  $message."\n\n\n------=$lim2--\n";
  47.  //attachement du message
  48.  if($fichier)
  49.  {
  50.   $f   = fopen($fichier,"r" );
  51.   $contenu = fread($f,filesize($fichier));
  52.   fclose($f);
  53.   //formatte les données pour suivre la norme RFC 2045 (voir nexen aussi)
  54.   $contenu = chunk_split(base64_encode($contenu));
  55.   $attachement =
  56.   "------=$lim1\n".
  57.   "Content-Type: $typemime; name=\"$nom\"\n".
  58.   "Content-Transfer-Encoding: base64\n".
  59.   "Content-Disposition: attachment; filename=\"$nom\"\n\n$contenu\n\n\n------=$lim1\n";
  60.  }
  61.  else
  62.   $attachement = "";
  63.  //fin du message
  64.  $mail_mime =
  65.  "Date: $date\n".
  66.  "MIME-Version: 1.0\n".
  67.  "Content-Type: multipart/mixed;\n".
  68.  " boundary=\"----=$lim1\"\n\n";
  69.  return @mail($to,$sujet,$texte_simple.$texte_html.$attachement,"Reply-to: $reply\nFrom: $from\n".$mail_mime);
  70. }


 
 
en me basant principalement sur les type mime...
 
ici y a pas mal d'infos mais c'est un peu le foutoir :
 
http://www.cru.fr/JRES95/actes/tutoriaux/mime.html
 
 :)  


comment tu l attaches ton fichier ?  
merci d'avance


---------------
Newsletter RCZ : inscriptions compliquées ou réceptions tardives ? Mon blog la partage sans délai. C est ici que ça se passe : https://gravelparis.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed