[RESOLU] Problème avec la fonction mail()

Problème avec la fonction mail() [RESOLU] - PHP - Programmation

Marsh Posté le 26-05-2007 à 14:48:09    

Bonjour,

 

je souhaite utiliser la fonction mail pour envoyer des messages en HTML.
J'ai donc utiliser les en-têtes qui sont en exemple dans la doc PHP.

 
Code :
  1. $entete = "MIME-Version: 1.0\r\n";
  2. $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
  3. $entete .= "From: mail@site.com";
  4. // envoi du mail
  5. $envoi= mail ($adresse, $sujet, $corps, $entete);
 

Lorsque je regarde le mail depuis un webmail, tout va bien, lorsque je le reçois dans Outlook le mail est anonyme et en format texte. En fait il ne considère que la première ligne d'en-tête, les 2 autres sont inclues dans le message.

 
Code :
  1. Content-type: text/html; charset=iso-8859-1 From: mail@site.com
  2. <html><head><title>[Sujet] Rappel de vos identifiants</title></head><body><p>
 

Astik


Message édité par astik89 le 26-05-2007 à 19:15:04
Reply

Marsh Posté le 26-05-2007 à 14:48:09   

Reply

Marsh Posté le 26-05-2007 à 14:55:55    

Essaye dans les \r

Reply

Marsh Posté le 26-05-2007 à 14:59:35    

merci beaucoup.
 
j'avais tout essayé sauf ça
 
Vraiment trop simple!!

Reply

Marsh Posté le 26-05-2007 à 15:00:58    

\r\n c'est pour les serveurs windows
\n pour les *nix

Reply

Marsh Posté le 26-05-2007 à 15:08:19    

ok

Reply

Marsh Posté le 26-05-2007 à 18:32:43    

HouseMD a écrit :

\r\n c'est pour les serveurs windows
\n pour les *nix


comment peux t'on faire pour que ce soit compatible Windows ET systeme unix.
 
on mets les retours chariots des 2 systemes l'un à la suite de l'autre  ?

Reply

Marsh Posté le 26-05-2007 à 18:35:55    

pourquoi veux-tu que ce soit compatible avec les 2 OS??
 
Tu connais l'OS de ton serveur, donc tu choisis une des deux solutions.

Reply

Marsh Posté le 26-05-2007 à 18:52:26    

en fait tu parlais de Outlook donc je sais pas pourquoi je me disais que c'etait au niveau de l'OS client et HouseMD a pourtant parlé de serveur  
 
pioufff, en effet tu as raison, on connais l'os sur lequel il y a notre serveur Web. En fonction de ca, on met soit des \n pour les systeme unix, soit \r\n pour les systeme Windows dans notre code.  
 
C'est un peu dommage, notre code est donc pas 100% portable.

Reply

Marsh Posté le 26-05-2007 à 19:00:22    

weed a écrit :

en fait tu parlais de Outlook donc je sais pas pourquoi je me disais que c'etait au niveau de l'OS client et HouseMD a pourtant parlé de serveur  
 
pioufff, en effet tu as raison, on connais l'os sur lequel il y a notre serveur Web. En fonction de ca, on met soit des \n pour les systeme unix, soit \r\n pour les systeme Windows dans notre code.  
 
C'est un peu dommage, notre code est donc pas 100% portable.


Tu peux très bien détecter l'OS du serveur et agir en conséquence.
 
Quoi que vu l'intéret limité d'un serveur windows tout façon...

Reply

Marsh Posté le 26-05-2007 à 19:13:11    

En fait tu peux utiliser \r\n sur les 2 OS (même source).
Dans ton code la ligne 3 il te manque le \r\n à la fin. D'où le problème que tu as signalé.
Le bon code est donc :

Code :
  1. $entete = "MIME-Version: 1.0\r\n";
  2. $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
  3. $entete .= "From: mail@site.com\r\n";
  4. // envoi du mail
  5. $envoi= mail ($adresse, $sujet, $corps, $entete);


 
Notes:
- il est conseillé de tester le code retour de la fonction mail(). false ou true.
- tu peux si nécessaire ajouter dans l'en-tête les champs Reply-to etc...
 
Extrait de la documentation PHP sur mail():
additional_headers (optional)
 
String to be inserted at the end of the email header.  
 
This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n).  

Note: When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.


Message édité par dnlilas le 26-05-2007 à 19:24:15
Reply

Marsh Posté le 26-05-2007 à 19:13:11   

Reply

Marsh Posté le 31-05-2007 à 10:55:51    

Et au passage j'espère que les 3 premiers paramètre de la fonctions mails seront fortement controlé, car merci les failles XSS sinon (si ce script est sur une page contact par exemple).


---------------
CPU-Z | Timespy | Mes bd
Reply

Sujets relatifs:

Leave a Replay

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