Problème mail html envoyé via php

Fermé
Ben - 30 juil. 2009 à 00:17
 Samy - 30 juil. 2009 à 15:46
Bonjour à tous,

J'ai fait des tas de recherches jusqu'alors, sur votre forum, ou sur d'autres sites. J'ai également testé des tas de synthaxes différentes y compris celle donnée sur php.net, mais sans succès.

Voila mon problème, j'ai un formulaire de demande de devis sur le site que je crée, et je veux que l'entreprise reçoive cette demande de devis sous une forme bien présentée, en HTML sans caractères spéciaux qui s'affichent bizarrement, mais rien a faire je n'obtiens jamais de résultat propre.

Voici mon script PHP :

<?php
$to = 'monmail@mail.com';

$devis_html = $_POST['devis'];
$genre = $_POST['genre'];
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$societe = $_POST['societe'];
$adresse=$_POST['adresse'];
$cp = $_POST['CP'];
$ville = $_POST['ville'];
$pays = $_POST['pays'];
$tel = $_POST['tel'];
$mail = $_POST['mail'];
$nbs = $_POST['nbre_salaries'];
$service = $_POST['service'];
$sectact = $_POST['secteur_activite'];

$header = "From: \"Formulaire Devis\"<".$mail.'>'."\n";
$header .= 'Reply-to: \"JML\" <XX@XXXXXXXX.fr>'."\n";
$header .= 'MIME-Version: 1.0' . "\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\n";

$boundary = '-----='.md5(rand());

$sujet = 'Demande de devis (Site Internet)';


$devis = '<html><head></head><body>'.$genre.' '.$nom.' '.$prenom.', '."\n";
$devis .= 'Societe : '.$societe."\n";
$devis .= 'Service : '.$service."\n";
$devis .= $adresse."\n";
$devis .= $cp."\n";
$devis .= $ville."\n";
$devis .= $pays."\n";
$devis .= "\n".'Infos Supplementaires : '."\n";
$devis .= 'Nombre de Salaries : '.$nbs."\n";
$devis .= 'Secteur d\'activite : '.$sectact."\n";
$devis .= 'Tel : '.$tel."\n";
$devis .= 'E-Mail : '.$mail."\n";
$devis .= "\n".$devis_html.'</body></html>'."\n";


mail($to, $sujet, $devis, $header);

header('location: merci_d.htm');
exit;

?>


Tous se passe bien, le script s'éxécute sans problème, mais voila, ce que je reçois n'est pas du tout ce qui est demandé :


Monsieur TEST ben, Societe : XXX Service : Bureau_etudes 5 lot le ville 05459 france Infos Supplementaires : Nombre de Salaries : 20-49 Secteur d'activite : Agro_Agri Tel : 0953458525 E-Mail : i.n@livre.ru TESTTESTDEMANDEDEVISéà ¨ùê


Je précise que je remplis le formulaire avec des infos bidons et des accents pour avoir tous les points de vue sous le nez.
J'ai également un autre soucis, quand je soumet mon formulaire sous firefox, celui ci éxécute bien le script alors que sous internet explorer, celui ci m'ouvre une boite de dialogue avec les options "Ouvrir", "Enregistrer", "Annuler".

J'aurais donc 2 questions :

Comment faire pour avoir un mail en HTML, sans soucis d'encodage (j'ai testé en mettant ISO-8859-1 et en UTF-8, même resultat) pour n'avoir aucune balise affichée, un mail propre quoi :) ?

Comment faire pour qu'Internet explorer éxécute le script (IE 7.0) ?

Le site n'étant pas encore en ligne, je teste mes pages et script a l'aide de Wamp 2.0, avec un php.ini bien configuré.

Merci a tous de vos réponses, que j'espere positives, j'ai été pris par le temps, et j'aimerais avoir une solution d'ici demain soir si possible.

Bonsoir à tous !
A voir également:

27 réponses

Chez moi ça marche bien sans utf8_encode
Mais : question à 100 balles : le formulaire d'où proviennent les données est-il lui même encodé en UTF-8 ou en iso-8859-1?

J'ai essayé les 2 et visiblement quand les données sont en utf-8 il faut que le $header .= 'Content-type: text/html; charset=iso-8859-1' . "\n"; indique lui aussi l'encodage utf-8
Bref, il faudrait que ton site soit entièrement en utf8, ou entièrement en iso-8859-1, ce serait quand même plus simple.
1
nl2br() ?
1
Encore une fois (desolé, mon année de DUT ne m'a pas permis de developper beaucoup mes compétences php), peux tu préciser l'utilisation de cette fonction ?
0
En effet, en HTML, le passage à la ligne, c'est <br> et non pas \n
Pas vraiment besoin de fonction tu peux les mettre directement à la fin de chacune de tes lignes "$devis.=", à la place de s \n
Mais si une partie du texte vien par exemple d'un textarea saisi par l'utilisateur, là il faudra effectivement utiliser nl2br()
1
transforme les retour chariot php en <br>

ca devrait marcher (applique le comme utf8-encode de tout a l'heure ^^ )
1
+1 Samy.

C'est parfait !

ça marche !

Et bien MILLE MERCI à tout ceux qui m'ont accordé un peu de leur temps. Vous m'avez (presque, faut pas éxagerer) sauvé la vie.

Bonne continuation a vous tous, et merci encore !

PS : Dois-je signaler un "résolu" ou quelque chose du genre ? Si oui, faut il que je m'adresse aux administrateurs ? Je ne suis pas un habitué du forum...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour

Il te manque la déclaration de l'encodage en HTML. Celle que tu as faite concerne le courrier, elle est dans les headers transmis à la fonction mail. Pour que ton navigateur connaisse lui aussi l'encodage, il faut aussi lui dire.
Utilise la balise meta, dans ton HTML, entre <head> et </head> :

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
( car visiblement tu es en UTF-8)
0
Pour ta deuxième question, utilise l'extension html plutôt que htm : merci_d.html
(Et change le header en conséquence bien sûr)
Je ne suis pas sûr à 100%, mais ça devrait mieux marcher
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
30 juil. 2009 à 08:54
On nous conseille pourtant + le htm :s ! Puis, c'est qu'une extension raccourci du html après tout, je vois pas où peut être la différence ^^
0
Bonjour !

Bien, merci beaucoup "mon père" ^^.

Je vais voir a tout ça, donc la balise meta, est bien a mettre sur la page du formulaire ?
0
Je vois que mes explications n'étaient pas claires...
Si tu ne vois pas le texte avec le bon encodage dans ton mail, c'est que dans le HTML de ton mail il n'y a aucun encodage d'indiqué. La balise méta est à ajouter dans le mail, pas dans le formulaire.
0
Pour mettre les points sur les i :
$devis = '<html><head>'."\n"
$devis.='<meta http-equiv="content-type" content="text/html; charset=UTF-8">'."\n";
$devis.='</head><body>'.$genre.' '.$nom.' '.$prenom.', '."\n";
0
Re-bonjour

Merci beaucoup, j'essaie ça en début d'apres'm et je vous recontacte aussitôt
Merci encore !
0
Je viens d'essayer et..


Parse error: parse error in C:\Program Files\wamp\www\JML\Fr\Services\traitd_fr.php on line 34

sachant que la ligne 34 est dans ce bloc :

$devis = '<html><head>'."\n"; 
$devis .= '<meta http-equiv="content-type" content="text/html; charset=UTF-8">'."\n"; 
$devis .= '</head><body>'.$devis_html."\n";
$devis .= $pl.$genre." ".$nom." ".$prenom.", ".$pl;
0
PS: Et Internet explorer ne veux plus m'executer le script, alors qu'il me mettait l'erreur il y a 2 minutes...(je ne suis pas sur le même PC qu'hier)
0
J'ai réussi a regler le soucis d'ouverture, en fait, je lançais la page a partir de la clé USB au lieu de wamp...

Enfin bref, par contre, ce que tu m'a donné ce matin ne marche toujours pas, le mail que je reçois est le suivant :


<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head><body>Veuillez tapefezfzer votre demande de devis ici..

Monsieur fezfze fzefze,
Societe : fez
Service : Etudiant
fezfze
fezfez fez
fez

Tel : 1789189186
E-Mail : niufoenz@fbez.fr


Infos Supplementaires :
Nombre de Salaries : 20-49
Secteur d'activite : Medical</body>
0
(Le test ici, est fait sur une adresse "@orange.fr" , et reçu sur Outlook 2007, mêmes resultats que sur hotmail hier soir)
0
euh tu comprend ton code Oo? t'as mis tes balise head dans le body lol :o et t'as surement 2x body
0
Euh, mes balises head sont bien en dehors du body oO...

Et non, si tu regarde bien le mail reçu, les balises affichées, y'a qu'un seul body...

Le gras, c'est moi qui l'ai rajouté, en me plantant un peu..

Si tu prefere le mail que je reçois est exactement ça :

<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head><body>Veuillez tapefezfzer votre demande de devis ici..

Monsieur fezfze fzefze,
Societe : fez
 Service : Etudiant
fezfze
fezfez fez
fez

Tel : 1789189186
E-Mail : niufoenz@fbez.fr


Infos Supplementaires : 
Nombre de Salaries : 20-49
Secteur d'activite : Medical</body>


Ni plus ni moins, pourquoi continue il de m'afficher des caractères mal encodés, et surtout, pourquoi m'affiche il les balises html au lieu de les "utiliser" pour mettre en page ?!
0
Je ne vois pas de parse error dans les lignes que tu as indiquées. Il y en avait (j'avais oublié un ; à la fin de $devis = '<html><head>'."\n") mais tu l'as corrigée.

Pourrais-tu dire quelle est exactement la ligne 34, et donner aussi celles qui précède ?

D'autre part, je te signale que ni Firefox ni internet explorer n'ont jamais exécuté un script PHP, c'est le serveur qui les exécute. Quand tu dis dans ton message 9 Et Internet explorer ne veux plus m'executer le script, qu'est-ce que ça veut dire ? Que fais-tu pour essayer de l'exécuter et qu'est-ce qui se passe - ou ne se passe pas ?
0
Envoi TOUS ton script, toute ta page de mail stp ^^
0
Tu as retiré de tes headers le mime-type ! Il ne peut plus savoir que c'est du HTML
Si tu fais des modifications, sans nous le dire, on va avoir du mal à t'aider
0
Fausse manip' en recopiant le code que tu m'avais donné, je reteste comme ça, merci..
0
vire ces balises head et utilise la fonction utf8_encode() ca devrait rouler
0
oui là c'est du plein texte que t'envoie ^^ mais fais comme tu le faisai au début mais tu utilise utf8_encode et tiens nous au courant merci
0
Peux tu préciser un peu ou et comment j'utilise cette fonction utf8_encode() ?

Merci mille fois a vous deux pour l'aide que vous m'apportez.
0