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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1565590
astik89
Posté le 26-05-2007 à 14:48:09  profilanswer
 

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
mood
Publicité
Posté le 26-05-2007 à 14:48:09  profilanswer
 

n°1565591
HouseMD
Posté le 26-05-2007 à 14:55:55  profilanswer
 

Essaye dans les \r

n°1565592
astik89
Posté le 26-05-2007 à 14:59:35  profilanswer
 

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

n°1565593
HouseMD
Posté le 26-05-2007 à 15:00:58  profilanswer
 

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

n°1565595
astik89
Posté le 26-05-2007 à 15:08:19  profilanswer
 

ok

n°1565648
weed
Posté le 26-05-2007 à 18:32:43  profilanswer
 

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  ?

n°1565652
astik89
Posté le 26-05-2007 à 18:35:55  profilanswer
 

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.

n°1565658
weed
Posté le 26-05-2007 à 18:52:26  profilanswer
 

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.

n°1565662
HouseMD
Posté le 26-05-2007 à 19:00:22  profilanswer
 

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

n°1565669
dnlilas
Posté le 26-05-2007 à 19:13:11  profilanswer
 

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
mood
Publicité
Posté le 26-05-2007 à 19:13:11  profilanswer
 

n°1567717
chaced
Posté le 31-05-2007 à 10:55:51  profilanswer
 

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

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

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

 

Sujets relatifs
Envoyer un formulaire sans passer par le mail ?Problème d'ajout dans un array
[Sécurité des Formulaires ] Eviter les inscriptions automatiséesFonction Php
Probleme d'utilisation de l'API C de mysql sous linuxproblème de memory_limit
[Résolu] Problème d'includepointeur sur fonction membre / switch case
Problème envoi mail avec fonction mail() [Résolu][RESOLU]Fonction mail () problème d'envoi en HTML mais nickel en texte
Plus de sujets relatifs à : [RESOLU] Problème avec la fonction mail()


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