Problème mail html envoyé via php
Ben
-
Samy -
Samy -
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 :
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 !
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:
- Problème mail html envoyé via php
- Editeur html - Télécharger - HTML
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Mail delivery system - Forum Réseaux sociaux
- Envoyé de mon iphone - Guide
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.
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.
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()
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()
transforme les retour chariot php en <br>
ca devrait marcher (applique le comme utf8-encode de tout a l'heure ^^ )
ca devrait marcher (applique le comme utf8-encode de tout a l'heure ^^ )
+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...
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...
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)
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)
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
(Et change le header en conséquence bien sûr)
Je ne suis pas sûr à 100%, mais ça devrait mieux marcher
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 ^^
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 ?
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 ?
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.
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.
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";
$devis = '<html><head>'."\n"
$devis.='<meta http-equiv="content-type" content="text/html; charset=UTF-8">'."\n";
$devis.='</head><body>'.$genre.' '.$nom.' '.$prenom.', '."\n";
Re-bonjour
Merci beaucoup, j'essaie ça en début d'apres'm et je vous recontacte aussitôt
Merci encore !
Merci beaucoup, j'essaie ça en début d'apres'm et je vous recontacte aussitôt
Merci encore !
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 :
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;
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)
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>
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>
euh tu comprend ton code Oo? t'as mis tes balise head dans le body lol :o et t'as surement 2x body
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 :
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 ?!
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 ?!
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 ?
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 ?