[php] Fonction mail() sous IE8

tpixl

Nouveau membre
Bonjour à tous,

Encore un qui vient sur ce forum juste quand il a besoin d'aide... qui ne s'est présenté dans la section dédiée,etc...
Oui, ok, c'est vrai je suis coupable! Enfin n'étant pas habitué à participer à des forums je consulte pourtant souvent le forum Tom's Hardware et je dois dire que ça m'a souvent bien aidé !

Voila le contexte

Je ne suis pas un pro de la programmation web, loin de là, cependant je dois développer une petite page de présentation de l'entreprise pour laquelle je travaille en attendant que l'on réalise une vraie page comme il se doit avec des professionnels de ce domaine.

L'idée étant un petit logo.jpg par-ci, un petit texte de présentation html par-là et un formulaire de prise de contact avec récupération du formulaire par email en php.

Et voila mon soucis

Pour la partie htlm, no souçaïlle, par contre la partie .php de récupération du formulaire et de son envoi par la fonction mail() me pose problème.

Tout a bien fonctionné pendant que je testais régulièrement sous Firefox... la petite pop-up "mail envoyé" s'affichait bien, et je recevais mes formulaire sur mon compte mail...

C'est en testant sous divers navigateurs que ça s'est gaté et en particulier pour Internet Explorer 8.
Systématiquement le mail ne part pas...

Est-ce que vous auriez une idée d'où cela peut venir ?

Navigateurs testés

Firefox v3.5.7 : ok
Opera v10.10 : ok
Safari v4.0 : ok
Google Chrome v4.0 : ok

Internet Explorer v8.0.6001.18702IC : no ok

Code :
[cpp]<?php
$headers ="From: $email\r\n";
$headers .="Reply-To: $email\n";
$headers .="MIME-Version: 1.0\r\n";
$headers .="Content-Type: text/html\n";
$headers .="Content-Transfer-Encoding: 8bit";
$message ="<html><body>Message de : $nom <br>Societe : $societe<br>Message : $texte.</body></html>";

if(mail('me@gmail.com', 'Formulaire Web envoyé', $message, $headers))
{
header('Content-Type: text/html; charset=ISO-8859-1');
echo "<script language=\"javascript\">alert('Le message a bien été envoyé');document.location.href='index2.html'</script>";

}
else
{

header('Content-Type: text/html; charset=ISO-8859-1');
echo "<script language=\"javascript\">alert('Le message n\'a pas été envoyé');document.location.href='index2.html'</script>";
}
?> [/cpp]

Dans l'attente d'une réponse,
Regards,

tpixl.
 

marsien

Grand Maître
Salut,

Il faudrait peut-être aussi voir le formulaire d'envoi. C'est plutôt cette partie a priori qui pose problème. Tout le code PHP est sur le serveur et n'a donc rien à voir avec le navigateur.
 

tpixl

Nouveau membre
Salut marsien,

merci de ta réponse.

Voici un bout du fichier .html contenant le formulaire :

[cpp]!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd">
<html>
<head>
<title>***.fr - Site en construction</title>
<meta name="description" content="Etude / Développement / Production d'emballages haut de gamme, écrins, classeurs, calendriers, PLV">
<meta name="keywords" content="Boites montéés recouverts, montée recouvertes, étuis, écrins, haut de gamme, luxe, PLV, calendriers, classeurs">
<meta name="copyright" content="2010, ***.fr">
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
<style type="text/css">

[...]

<script type="text/javascript" language="Javascript" >
<!--
function verification()
{
if(document.formulaire.societe.value == "") {
alert("Veuillez entrer le nom de votre société");
document.formulaire.societe.focus();
return false;
}
else
if(document.formulaire.nom.value == "") {
alert("Veuillez entrer votre nom");
document.formulaire.nom.focus();
return false;
}
else
if(document.formulaire.email.value == "") {
alert("Veuillez entrer votre adresse electronique");
document.formulaire.email.focus();
return false;
}
else
if(document.formulaire.email.value.indexOf('@') == -1) {
alert("L'adresse email entrée est invalide");
document.formulaire.email.focus();
return false;
}
else
if(document.formulaire.texte.value == "") {
alert("Veuillez entrer le texte de votre message");
document.formulaire.texte.focus();
return false;
}
return true
}
//-->
</script>
</head>
<body>

[...]

<h2><a name="formulaire"></a>Formulaire de contact</h2>

<form name='formulaire' action='mail.php' method='post' onSubmit="return verification()">

<br>

<table>

<tr><td>Société : </td><td><input name='societe' type='text' size='50'></td></tr>

<tr><td>Nom : </td><td><input name='nom' type='text' size='50'></td></tr>

<tr><td>Email</td><td><input name='email' type='text' size='50'></td></tr>

<tr><td valign="top">Votre message : </td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>

<tr><td><input name='annuler' type='reset' value='Effacer'></td><td>

<input name='soumettre' type='submit' value='Envoyer'></td></tr>

</table>
</form>
</body>
</html>
[/cpp]

J'espère que ça répond à ton post,

tpixl.
 

batchy

Grand Maître
je te conseillerait de virer ton adresse mail de ton code avant que les spammeurs la repèrent ;)

sinon, t'est sur que ta page est valide ? ( ) parce que la mise en page par tableau elle me fait déjà un peu peur ...
 

tpixl

Nouveau membre
@batchy: Outch... oui merci à toi! je croyais l'avoir fait mais j'ai pas relu le code.
En effet, le validateur me donne 16 erreurs mais aucune se trouvant dans le bout de code que je vous ai posté.
Je vais quand même essayer de passer à 0 fautes :)
 

tpixl

Nouveau membre
Je vous fais part de mon avancé :

- IE 8 récupère bien les différentes variables du formulaire $societe, $nom, $email et $texte. Je viens de les afficher via une page .php
 

marsien

Grand Maître
Le code html semble OK. De plus si IE8 renvoie bien les infos du formulaire, l'erreur ne doit pas venir de là.

Il faut par contre faire attention, les variables globales sont dépréciées, voire supprimées des versions récentes de PHP. A la place de $email, $texte, $societe, etc... tu devrais utiliser la variable dédiée $_POST ; ce qui donnera $_POST['email'], $_POST['teste'], $_POST['societe'], etc...

Compare également ce qui est réellement envoyé par IE8 par rapport à unn autre navigateur (Firefox par exemple) : var_dump($_POST);

Enfin, est-ce que ça marche avec IE7 ou le problème est-il général à tous les IE (récents ; on va faire comme Google et considérer que IE6 et précédent n'existent plsu :o ) ?

PS : je me rappelle aussi d'un vieux sujet où le problème venait de la désactivation des cookies sous IE. Regarde aussi de ce côté-là.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 079
Messages
6 716 705
Membres
1 586 247
Dernier membre
MrAzgarIII
Partager cette page
Haut