Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
656 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Envoyer un mail au format HTML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Envoyer un mail au format HTML

n°457785
veryfree
Posté le 15-07-2003 à 03:08:14  profilanswer
 

Bonjour,
j'utilise la fonction  mail() de php qui a l'air de fonctionner tres bien, jme demandait si c'etait possible d'envoyer le mail au format HTML ...
 
si vous savez comment on fait je vous en remercis;
 
 
 
 
jerry

mood
Publicité
Posté le 15-07-2003 à 03:08:14  profilanswer
 

n°457789
skylight
Made in France.
Posté le 15-07-2003 à 03:18:06  profilanswer
 

Oui, suffit d'indiquer le type "MIME" dans les headers, et tu mets ton code html dans le corps, normal ;)
 
plus d'infos dans les exemples de la fonction mail() sur php.net

n°460425
veryfree
Posté le 17-07-2003 à 15:29:14  profilanswer
 

Skylight a écrit :

Oui, suffit d'indiquer le type "MIME" dans les headers, et tu mets ton code html dans le corps, normal ;)
 
plus d'infos dans les exemples de la fonction mail() sur php.net


merci bien je essaye ca des que le net sera retabli chez moi :cry:

n°460517
skylight
Made in France.
Posté le 17-07-2003 à 16:00:22  profilanswer
 

veryfree a écrit :


merci bien je essaye ca des que le net sera retabli chez moi :cry:

Toi aussi victime du dégroupage free ? :D
 
(15 jours que je suis dégroupé, 6 jours de connexion effective)

n°462503
veryfree
Posté le 19-07-2003 à 16:09:58  profilanswer
 

Skylight a écrit :

Toi aussi victime du dégroupage free ? :D
 
(15 jours que je suis dégroupé, 6 jours de connexion effective)


 
3 mois que je suis chez eux, j avait eu aucun probleme et la ca fait 4 jours :cry:
 
je suis ds un cyber café  :sweat:  
 

n°462542
omega2
Posté le 19-07-2003 à 17:03:16  profilanswer
 

veryfree a écrit :


 
3 mois que je suis chez eux, j avait eu aucun probleme et la ca fait 4 jours :cry:
 
je suis ds un cyber café  :sweat:  
 
 

Ce mois ci, ils ont pas mal de problème chez free, entre les coupures de courants, le matos qui crève, les mise a jour d'une grande partie de leur matos et autres parties du genre. On peut pas dire que ca soit un mois sans problème pour eux. ;)
Mais bon, au moins on voit qu'ils bossent les technitiens de free.
 
Pour la question initiale, il me semble que c'est exactement comme pour un mail normal a part que le contenu du mail n'est pas du texte seul mais une page html normale.

n°462544
skylight
Made in France.
Posté le 19-07-2003 à 17:08:26  profilanswer
 

omega2 a écrit :

*
 
Pour la question initiale, il me semble que c'est exactement comme pour un mail normal a part que le contenu du mail n'est pas du texte seul mais une page html normale.

Oui, mais il faut aussi modifier l'entete pour indiquer le type "MIME"

n°463181
Mr yvele
yvele n'est plus.
Posté le 21-07-2003 à 11:44:17  profilanswer
 

http://www.cru.fr/JRES95/actes/tutoriaux/mime.html
 
 :)  
 
 
Si tu veux pas te prendre la tête, moi j'ai fait ça :
(c'est ptetre pas super mega genial preatique.. mais bon ça marche tres bien..)

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. }


---------------
yvele n'est plus.
n°463224
veryfree
Posté le 21-07-2003 à 12:37:33  profilanswer
 

merci pour vos reponses :)
 
jdoit choisir quel type mime dans ceux la :
 
//Pour le type mime de l'attachement :
      //
      //pour un message :
      // message/rfc822
      // message/partial
      // message/external-body
      //Text :
      // text/plain
      // text/richtext
 

n°463235
Mr yvele
yvele n'est plus.
Posté le 21-07-2003 à 12:53:30  profilanswer
 

moi j'envoie avec "text/plain" ET "text/html"
 
edit: voir ma fonction  :)  
edit2: désolé pour les commentaires qui trainent.. c'est juste pour l'attachement ça! donc ça depend du type que tu veux attacher


Message édité par Mr yvele le 22-07-2003 à 10:02:52

---------------
yvele n'est plus.
mood
Publicité
Posté le 21-07-2003 à 12:53:30  profilanswer
 

n°463849
veryfree
Posté le 21-07-2003 à 19:53:34  profilanswer
 

Mr yvele a écrit :

moi j'envoie avec "text/plain"
 
edit: voir ma fonction  :)  
edit2: désolé pour les commentaires qui trainent.. c'est juste pour l'attachement ça! donc ça depend du type que tu veux attacher


 
pour le HTML donc, j ai bien regardé ta fonction mais chui un peu perdu la :D

n°464333
Mr yvele
yvele n'est plus.
Posté le 22-07-2003 à 10:01:05  profilanswer
 

Voila, lol désolé.. jme suis rendu compte que j'avais ajouté quelques feature (de merde) à cette fonction..
du cuop je l'ai epuré, ça donne ça :
 
donc c'est juste pour envoyer un mail en html.. sans attachements..  :)  
 

Code :
  1. //
  2. //Envoi un email en html
  3. //
  4. function send_mail($to, $sujet, $message, $from, $reply = null)
  5. {
  6.  $reply  = $reply?$reply:$from;
  7.  $date  = date("l j F Y, G:i" );
  8.  //génére un identifiant unique de 32 caractères (32 caractères je crois..) (voir nexen, arf)
  9.  $lim1 = "_parties_".md5(uniqid(rand()));
  10.  $lim2 = "_parties_".md5(uniqid(rand()));
  11.  //message en texte bidon pour les navigateurs qui n'acceptent pas le HTML
  12.  $texte_simple =
  13.  "This is a multi-part message in MIME format.\n\n".
  14.  "------=$lim1\n".
  15.  "Content-Type: multipart/alternative;\n".
  16.  "\tboundary=\"----=$lim2\"\n\n".
  17.  "------=$lim2\n".
  18.  "Content-Type: text/plain; \tcharset=\"US-ASCII\"\n".
  19.  "Content-Transfer-Encoding: quoted-printable\n\n".
  20.  strip_tags(eregi_replace("<br />", "\n",$message))."\n\n";
  21.  //message en html original
  22.  $texte_html =
  23.  "------=$lim2\n".
  24.  "Content-Type: text/html; charset=\"US-ASCII\"\n".
  25.  "Content-Transfer-Encoding: quoted-printeble\n\n".
  26.  $message."\n\n\n------=$lim2--\n";
  27.  //fin du message
  28.  $mail_mime =
  29.  "Date: $date\n".
  30.  "MIME-Version: 1.0\n".
  31.  "Content-Type: multipart/mixed;\n".
  32.  " boundary=\"----=$lim1\"\n\n";
  33.  return @mail($to,$sujet,$texte_simple.$texte_html,"Reply-to: $reply\nFrom: $from\n".$mail_mime);
  34. }


Message édité par Mr yvele le 22-07-2003 à 13:46:06

---------------
yvele n'est plus.
n°464336
Mr yvele
yvele n'est plus.
Posté le 22-07-2003 à 10:04:32  profilanswer
 

text/plain pour le texte bidon..
text/html pour le html
 
et tu peux envoyer les deux en meme temps dans le meme mail.. comme ça si le logiciel qui ouvre le mail ne comprend pas le text/html, ben il pourra se tourner vers le text/plain
 :)


---------------
yvele n'est plus.
n°464590
veryfree
Posté le 22-07-2003 à 13:12:16  profilanswer
 

merci bien c plus clair a present :jap:

n°464624
Mr yvele
yvele n'est plus.
Posté le 22-07-2003 à 13:46:57  profilanswer
 

Vraiment désolé, il y avais une petite merde dans la fonction :
 
$date = date("l j F Y, G:i" ):"0 0 0 0, 0:0";
 
mais la j'ai édité!  :)


---------------
yvele n'est plus.
n°483805
veryfree
Posté le 11-08-2003 à 17:14:49  profilanswer
 

merci a vous tous pour votre aide, maintenant que j ai le net a la maison, j ai pu faire mes tests, j ai fait ca :
 

Code :
  1. <?
  2. $email="exp@exe.org";
  3. $entetedate  = date("D, j M Y H:i:s -0600" ); // Offset horaire
  4. $entetemail  = "From: $email \n"; // Adresse expéditeur
  5. $entetemail .= "Cc: \n";
  6. $entetemail .= "Bcc: \n"; // Copies cachées
  7. $entetemail .= "Content-Type: text/html";
  8. $entetemail .= "Reply-To: $email "; // Adresse de retour
  9. $entetemail .= "Date: $entetedate"; 
  10. $message="<html><body><p>hello world</p></body></html>";
  11. @mail("very.free@free.fr","hello world", $message,$entetemail);
  12. ?>


le mail est tj envoyé sous forme de texte brut ...


Message édité par veryfree le 11-08-2003 à 17:19:59
n°483835
simogeo
j'ai jamais tué de chats, ...
Posté le 11-08-2003 à 17:37:27  profilanswer
 

yo people  :hello:  
 
il y a une classe qui prend en charge les headers suivant le type de mail ... pieces attachées etc .....et fonctionne plutôt pas mal
 
http://phpmailer.sourceforge.net/
 
moi c'est ce que j'utilise ..  :sol:  
ca ne t'empeche pas de te pencher sur les histoires d'entêtes ... c'est plus sympa de comprendre  [:troa]  
 
(exemples d'utilisation sur le site et fourni avec le package je crois :ange: )


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°483899
veryfree
Posté le 11-08-2003 à 18:28:06  profilanswer
 

simogeo a écrit :

yo people  :hello:  
 
il y a une classe qui prend en charge les headers suivant le type de mail ... pieces attachées etc .....et fonctionne plutôt pas mal
 
http://phpmailer.sourceforge.net/
 
moi c'est ce que j'utilise ..  :sol:  
ca ne t'empeche pas de te pencher sur les histoires d'entêtes ... c'est plus sympa de comprendre  [:troa]  
 
(exemples d'utilisation sur le site et fourni avec le package je crois :ange: )


 
jvien de voir en effet ca a l air pas mal
mais j aimerait qd meme resoudre mon probleme sans avoir a utiliser une lib externe d'autant que je veux garder du code leger pq le serveur soxxor pas mal :/

n°484109
simogeo
j'ai jamais tué de chats, ...
Posté le 11-08-2003 à 21:05:01  profilanswer
 


 

Code :
  1. <?
  2. error_reporting(E_ALL);
  3. $email="exp@exe.org";
  4. $entetedate  = date("D, j M Y H:i:s -0600" ); // Offset horaire
  5. $entetemail  = "MIME-Version: 1.0\n";
  6. $entetemail .= "Content-type: text/html; charset=iso-8859-1\n";
  7. $entetemail .= "From: $email \n"; // Adresse expéditeur
  8. $entetemail .= "Reply-To: $email\n"; // Adresse de retour
  9. $entetemail .= "Date: $entetedate\n"; 
  10. $message="<html><body><p>hello world</p></body></html>";
  11. mail("very.free@free.fr","hello world", $message,$entetemail);
  12. ?>


 
et comme ça ?
j'ai aussi viré @ devant email... si ca ne fonctionne pas ... postes ton message d'erreur pour qu'on te file un coup de main  ;)  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°484194
veryfree
Posté le 11-08-2003 à 21:55:37  profilanswer
 

simogeo a écrit :


 

Code :
  1. <?
  2. error_reporting(E_ALL);
  3. $email="exp@exe.org";
  4. $entetedate  = date("D, j M Y H:i:s -0600" ); // Offset horaire
  5. $entetemail  = "MIME-Version: 1.0\n";
  6. $entetemail .= "Content-type: text/html; charset=iso-8859-1\n";
  7. $entetemail .= "From: $email \n"; // Adresse expéditeur
  8. $entetemail .= "Reply-To: $email\n"; // Adresse de retour
  9. $entetemail .= "Date: $entetedate\n"; 
  10. $message="<html><body><p>hello world</p></body></html>";
  11. mail("very.free@free.fr","hello world", $message,$entetemail);
  12. ?>


 
et comme ça ?
j'ai aussi viré @ devant email... si ca ne fonctionne pas ... postes ton message d'erreur pour qu'on te file un coup de main  ;)  
 


ben en fait y a pas de message d erreur, le mail arrive ( il met 30 min mais il arrive :D )
 
c'est juste que les balises html ne sont pas interpertés :/


Message édité par veryfree le 11-08-2003 à 21:56:27
n°484259
simogeo
j'ai jamais tué de chats, ...
Posté le 11-08-2003 à 22:46:47  profilanswer
 

veryfree a écrit :


ben en fait y a pas de message d erreur, le mail arrive ( il met 30 min mais il arrive :D )
 
c'est juste que les balises html ne sont pas interpertés :/


sur une webmail ? sur un client de messagerie ?  :heink:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°484264
veryfree
Posté le 11-08-2003 à 23:08:03  profilanswer
 

simogeo a écrit :


sur une webmail ? sur un client de messagerie ?  :heink:  


 
c sur imp.free.fr
 
un webmail quoi

n°484278
simogeo
j'ai jamais tué de chats, ...
Posté le 11-08-2003 à 23:45:29  profilanswer
 

veryfree a écrit :


 
c sur imp.free.fr
 
un webmail quoi


ben il est peut-etre tout simplement pas configuré pour interpréter le html  [:spamafote]  
 
essayes avec une autre adresse de destination ou avec un client de messagerie ou revoit la config de ton webmail  [:troa]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°484279
veryfree
Posté le 11-08-2003 à 23:49:10  profilanswer
 

simogeo a écrit :


ben il est peut-etre tout simplement pas configuré pour interpréter le html  [:spamafote]  
 
essayes avec une autre adresse de destination ou avec un client de messagerie ou revoit la config de ton webmail  [:troa]  


 
jvai voir ca :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Envoyer un mail au format HTML

 

Sujets relatifs
Ecriture alignée à la vertical en HTMLptite question sur du html
afficher un repertoire sur page html[HTML/CSS] Peut-on écrire à la verticale ?
[RESOLU][ALGO]Comment fonctionne le tracking par mail ?Problème avec Winsock pour l'envoi de mail
[HTML/js] Faire un lien avec un boutonEnvoyer un mail avec code HTML avec Mapi sous VB...
[PHP] envoyer un mail au format HTMLEnvoyer un mail au format HTML avev VB ?
Plus de sujets relatifs à : Envoyer un mail au format HTML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR