envoyer un mail en html

envoyer un mail en html - PHP - Programmation

Marsh Posté le 11-12-2004 à 15:48:06    

bonjour,
j'ai quelques petites difficultés avec la fonction mail

Code :
  1. $message='<html>mon message<br>ne fonctionne pas trop</html>';
  2. mail($receveur,$message,$entete);


je voudrais envoyer un mail au format html, et sur mon adresse perso hotmail pas de probleme mais apparemment si je l'envoie a quelqu'un qui n'est pas chez hotmail (il semble le regarder sur outlook)il recoit le message :
<html>mon message<br>ne fonctionne pas trop</html>
 
et non pas :
mon message
ne fonctionne pas trop
 
comment dois je m'y prendre.
 
merci de votre aide


Message édité par attentio le 24-03-2005 à 20:47:39

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 11-12-2004 à 15:48:06   

Reply

Marsh Posté le 11-12-2004 à 16:48:32    

Code :
  1. mail($to,$subject,$text,$headers)


essaye avec ces entetes :
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: truc@truc.fr";

Reply

Marsh Posté le 11-12-2004 à 17:32:45    

attentio a écrit :


je voudrais envoyer un mail au format html, et sur mon adresse perso hotmail pas de probleme mais apparemment si je l'envoie a quelqu'un qui n'est pas chez hotmail (il semble le regarder sur outlook)il recoit le message :
<html>mon message<br>ne fonctionne pas trop</html>


 
Je remercie tous les saints du paradis de ce fait, mais tu ne peux pas forcer un utilisateur à lire un mail au format html s'il en a décidé autrement. La plupart des clients mail intègre une fonction affichant au format texte un mail quelque soit le format d'origine prévu...
 
(petit détail à prendre en compte)

Reply

Marsh Posté le 11-12-2004 à 17:43:52    

effectivement, tu ne peux pas le forcer, mais si à l'origine ton gestionnaire mail ne sait pas que c'est du html je ne vois pas comment il pourrait le voir tout seul d'où l'interet de le préciser le format en entete... t'as essayé au moins ??
 
(pour ceux qui diraient qu'il le detecte grâce aux balises <html></html> peuvent s'abstenir!...)


Message édité par xelad le 11-12-2004 à 17:47:53
Reply

Marsh Posté le 11-12-2004 à 18:01:21    

dans mon entete, j'ai mis ceci :

Code :
  1. $entete  = "MIME-Version: 1.0\r\n";
  2. $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
  3. $entete="From: contact@monsite.com <monsite@60gp.ovh.net>\n";
  4. $entete.="Reply-to: contact@monsite.com ";


 
mais ca n'as pas l'air de marcher !!!!
 
merci de votre aide

Reply

Marsh Posté le 11-12-2004 à 18:07:59    

oublie pas la concaténation ligne 3, et le passage à la ligne... :

Code :
  1. $entete  = "MIME-Version: 1.0\r\n"; 
  2. $entete .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
  3. $entete .= "From: contact@monsite.com <monsite@60gp.ovh.net>\r\n"; 
  4. $entete .= "Reply-to: contact@monsite.com \n";


Message édité par xelad le 11-12-2004 à 18:12:04
Reply

Marsh Posté le 11-12-2004 à 18:14:43    

ca doit pas venir de la , parce que avant mon entete etait :

Code :
  1. $entete .= "From: contact@monsite.com <monsite@60gp.ovh.net>\r\n"; 
  2. $entete .= "Reply-to: contact@monsite.com \n";


et le mail s'envoyait quand meme.
maintant, je recois bien le mail, mais toujours sans la prise en compte des balises html
 
merci de ton aide

Reply

Marsh Posté le 12-12-2004 à 04:43:56    

pour l'envoi de mail(style newsletter) il est vrai qu'il est préférable d'utliser le retour chariot php "/n" que celui du html "<br>" sinon j'ai galéré ausii sur ce genre de truc :(


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 12-12-2004 à 14:43:21    

ca semble marcher maintenant !
mais j'ai encore un soucis, si la personne qui a recu le mail me le renvoi alors il ecrit:
 
votre commande n°93 à  bien été enregistrée  
 
a la place de :
 
votre commande n° 93 à bien été enregistrée
 
etrange, non?
 

Reply

Marsh Posté le 12-12-2004 à 17:30:50    

Vive le Character Coding :D

Reply

Marsh Posté le 12-12-2004 à 17:30:50   

Reply

Marsh Posté le 13-12-2004 à 10:39:53    

mais  c'est quoi donc  :??:

Reply

Marsh Posté le 28-09-2005 à 11:28:22    

est-ce possible que l'envoi de mail en html ne foctionne pas sous certaines versions de PHP, parce que sur un de mes hébergements cela fonctionne bien, mais là, impossible d'envoyer quoique ce soit en html
 
Seul Outlook le lis correctement...

Reply

Marsh Posté le 28-09-2005 à 11:36:29    

Décidément, y en a qui vont les chercher loin les discutions alors qu'on a eu les même récement. ;)
 
Si ton mail n'est lisible que sous otulook, c'est que le html de ton mail est merdique, donc retour à la case html.

Reply

Marsh Posté le 28-09-2005 à 11:44:15    

je mets juste <h1>texte</h1> !!!!

Reply

Marsh Posté le 28-09-2005 à 11:52:35    

C'est une histoire d'headers, encore une fois [:spamafote]

Reply

Marsh Posté le 28-09-2005 à 11:53:30    

te la fait à pas cher celle là  :)  
> http://fr.php.net/manual/fr/function.mail.php

Code :
  1. $headers  = 'MIME-Version: 1.0' . "\\r\\n";
  2. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\\r\\n";


et le texte du message doit être un doc html
après penches-toi donc sur MIME, c'est génial pour la back compat. envoyer du html et du text, et pour envoyer des P.J.

Code :
  1. <html>
  2. <head>
  3. <title></title>
  4. </head>
  5. <body>
  6. </body>
  7. </html>


Message édité par shakpana le 28-09-2005 à 11:54:09
Reply

Marsh Posté le 28-09-2005 à 11:58:17    

Justement mon code fonctionne sous php 4.3.11 mais pas sous php 4.3.2 mais je pense qu'il s'agite plus un problème de config que de version.
 
Mon code :
 
$headers  = 'MIME-Version: 1.0' . " \r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Oncle sam <onclesam@example.com>' . "\r\n";
 
 mail('moi@chezmoi.ch', 'essai', '<html><body><h1>Hello</h1></body></html>', $headers);


Message édité par Noisequik le 28-09-2005 à 12:02:17
Reply

Marsh Posté le 28-09-2005 à 12:00:31    

tu peux être plus explicite sur le marche pas ?
- les mails partent
- ne sont pas interpreter pareil par le même lecteur de courrier
c'est ça ?
 
ce qui serait pas mal,en ce cas c'est de comparer la source des 2 messages ...

Reply

Marsh Posté le 28-09-2005 à 12:07:43    

celui qui marche
 
                                                                                                                                                                                                                                                               

Citation :

X-Gmail-Received: ec6ea0447b773d5e880ede7dc6cdbf3604567a30
Delivered-To: frederic.leuba@gmail.com
Received: by 10.64.208.19 with SMTP id f19cs7835qbg;
        Wed, 28 Sep 2005 03:05:01 -0700 (PDT)
Received: by 10.70.110.17 with SMTP id i17mr3323591wxc;
        Wed, 28 Sep 2005 03:05:01 -0700 (PDT)
Return-Path: <>
Received: from mailserver.nexlink.net ([80.86.195.11])
        by mx.gmail.com with ESMTP id i39si96581wxd.2005.09.28.03.04.58;
        Wed, 28 Sep 2005 03:05:01 -0700 (PDT)
Received-SPF: neutral (gmail.com: 80.86.195.11 is neither permitted nor denied by best guess record for domain of mailserver.nexlink.net)
Received: from onyxtwo.ows.ch ([195.141.44.253])
        by mailserver.nexlink.net (Merak 8.0.3) with ESMTP id JEA74702
        for <frederic.leuba@antonietti-vesco.ch>; Wed, 28 Sep 2005 12:04:58 +0200
Received: (from f206980@localhost)
 by onyxtwo.ows.ch (8.11.6/8.11.6) id j8SA4vr11563;
 Wed, 28 Sep 2005 12:04:57 +0200
Date: Wed, 28 Sep 2005 12:04:57 +0200
Message-Id: <200509281004.j8SA4vr11563@onyxtwo.ows.ch>
To: frederic.leuba@antonietti-vesco.ch
Subject: Une nouvelle annonce a été postée depuis le site Fidele
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: Oncle sam <oncelsam@example.com>
X-Spam-Status: No, hits=4.45 required=8.00 tests=MIME_HTML_ONLY,SUBJ_ILLEGAL_CHARS,HTML_MESSAGE,NO_RDNS2
 version=3.0
X-Spam-Level: ****
X-Spam-Checker-Version: SpamAssassin 3.0 (1.3) on mailserver.nexlink.net
 
 
<html><body><h1>Hello</h1></body></html>


 
 
 
Celui qui ne va pas
 
                                                                                                                                                                                                                                                               

Citation :

X-Gmail-Received: a26a4e02b592d12d724067b2c83b32401bb2f9e1
Delivered-To: frederic.leuba@gmail.com
Received: by 10.64.208.19 with SMTP id f19cs7838qbg;
        Wed, 28 Sep 2005 03:05:05 -0700 (PDT)
Received: by 10.70.111.11 with SMTP id j11mr3229196wxc;
        Wed, 28 Sep 2005 03:05:04 -0700 (PDT)
Return-Path: <>
Received: from mailserver.nexlink.net ([80.86.195.11])
        by mx.gmail.com with ESMTP id i40si93891wxd.2005.09.28.03.05.04;
        Wed, 28 Sep 2005 03:05:04 -0700 (PDT)
Received-SPF: neutral (gmail.com: 80.86.195.11 is neither permitted nor denied by best guess record for domain of mailserver.nexlink.net)
Received: from p01.nexlink.net ([80.86.195.40])
        by mailserver.nexlink.net (Merak 8.0.3) with ESMTP (SSL) id JEA74702
        for <frederic.leuba@antonietti-vesco.ch>; Wed, 28 Sep 2005 12:05:03 +0200
Received: (qmail 31999 invoked by uid 48); 28 Sep 2005 10:05:03 -0000
Date: 28 Sep 2005 10:05:03 -0000
Message-ID: <20050928100503.31997.qmail@p01.nexlink.net>
To: frederic.leuba@antonietti-vesco.ch
Subject: Une nouvelle annonce a été postée depuis le site Fidele
MIME-Version: 1.0
 
Content-type: text/html; charset=iso-8859-1
 
From: Oncle sam <oncelsam@example.com>
 
 
<html><body><h1>Hello</h1></body></html>


 
Comme vous pouvez le voir, je fais les tests sous GMail.
 
Lorsque ce la marche j'ai le texte "Hello" en gras et dans le 2eme cas, j'ai tout ce texte qui apparait y compris les headers  
 
 
Content-type: text/html; charset=iso-8859-1
 
From: Oncle sam <oncelsam@example.com>
 
 
<html><body><h1>Hello</h1></body></html>


Message édité par Noisequik le 28-09-2005 à 12:11:45
Reply

Marsh Posté le 28-09-2005 à 12:12:52    

donc j'imagine que tu as compris d'où venais le problème ...
> les retours de ligne + ligne blanche ...
et - excuses-moi d'avance - ton code est 100% identique ?
si oui, ça devient louche ....

Reply

Marsh Posté le 28-09-2005 à 12:14:11    

le code est identique sur les deux serveurs, c'est là que je ne comprends pas !!

Reply

Marsh Posté le 28-09-2005 à 12:15:06    

la spécification mail :
- les entêtes sont séparés par \r\n
- la fin des entêtes est indiqué par \r\n\r\n
tu vois poruquoi ça agit ainsi...

Reply

Marsh Posté le 28-09-2005 à 12:18:25    

Note: il faut que ton dernier header n'est pas de \r\n
 [:coch]  

Reply

Marsh Posté le 28-09-2005 à 12:18:50    

Citation :

$headers  = 'MIME-Version: 1.0' . "\r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Oncle sam <oncelsam@example.com>' . "\r\n\r\n";
 mail('moi@chezmoi.ch', 'Essai', '<html><body><h1>Hello</h1></body></html>', $headers);


 
Le code devrait être juste là non ?  :sweat:  
 
 
 

Reply

Marsh Posté le 28-09-2005 à 12:20:34    

Code :
  1. $headers  = 'MIME-Version: 1.0' . "\\r\\n";
  2. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\\r\\n";
  3. // là pas de \\r\\n
  4. $headers .= 'From: Oncle sam <oncelsam@example.com>';
  5. mail('moi@chezmoi.ch', 'Essai', '<html><body><h1>Hello</h1></body></html>', $headers);


Reply

Marsh Posté le 28-09-2005 à 12:20:46    

est-ce que tu arriverais à corriger les fautes sinon pour produire le code qui te semble correcte, cela serait vraiment sympa.
 
Je n'y arrive vraiment pas malgrès la doc...

 
Ok merci mais ca ne change rien  :sweat:  :sweat:  
 
en plus il me met "expéditeur inconnu" !!
 


Message édité par Noisequik le 28-09-2005 à 12:23:30
Reply

Marsh Posté le 28-09-2005 à 12:24:32    

tu as compris la modif ?
le dernier en-tête ne doit pas avoir de retour de ligne donc

Code :
  1. $headers .= 'From: Oncle sam <oncelsam@example.com>' . "\\r\\n";
  2. mail() ...
  3. // à remplacer par
  4. $headers .= 'From: Oncle sam <oncelsam@example.com>';
  5. mail() ...


Message édité par shakpana le 28-09-2005 à 12:25:08
Reply

Marsh Posté le 28-09-2005 à 12:25:48    

oui j'ai fait cela et pas de changement...

Reply

Marsh Posté le 28-09-2005 à 12:28:20    

Si tu as du temps a perdre je peux envoyer à ton adresse email le mail, pour voir si tu vois une différence...
 
Avec un troisième hébergement différent cela marche aussi !! A croire que je suis tombé sur le seul qui ne joue pas et je ne peux pas déménager le site !!!!  :fou:  :fou:


Message édité par Noisequik le 28-09-2005 à 12:30:50
Reply

Marsh Posté le 28-09-2005 à 12:30:48    

avant essaye de passer en \n seul au lieu de \r\n
j'ai une classe mail qui tourne à merveille sur linux et win32* en utilisant \n seul ...
 
*win32 avec un vrai serveur de mail, xmail

Reply

Marsh Posté le 28-09-2005 à 12:33:14    

ah cela marche sans les \r !!!!!
Incroyable !! Merci 1000 fois ¨!!

 
Maintenant va savoir pourquoi??????


Message édité par Noisequik le 28-09-2005 à 12:34:24
Reply

Marsh Posté le 28-09-2005 à 12:37:02    

j'avais eu c'te galère avec les smtp sur win32 avant de switcher pour xmail ...
 
pourtant RFC822

3.1.2.  STRUCTURE OF HEADER FIELDS
 
        Once a field has been unfolded, it may be viewed as being com-
        posed of a field-name followed by a colon (":" ), followed by a
        field-body, and  terminated  by  a  carriage-return/line-feed.
        The  field-name must be composed of printable ASCII characters
        (i.e., characters that  have  values  between  33.  and  126.,
        decimal, except colon).  The field-body may be composed of any
        ASCII characters, except CR or LF.  (While CR and/or LF may be
        present  in the actual text, they are removed by the action of
        unfolding the field.)


mais bon ... php fait p.e. une translation ...
après enquête, c'est le serveur de mail qui choisit de ne pas gérer correctement les \r\n, alors que normallement un \n et/ou un \n doit faire l'affaire, php n'y est pour rien dans ce comportement ...


Message édité par shakpana le 28-09-2005 à 12:56:18
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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