Page 1 sur 1

script emailer qui marche pas bien

Posté : 28 mai 2009, 14:13
par metis15
Envoyer ses form par email en PHP, surtout quand on ne connait rien au php !!
Soit le script avec captcha suivant :

Code : Tout sélectionner

<?php header('Content-Type: text/html; charset=UTF-8'); extract($_POST,EXTR_OVERWRITE); if(isset($_POST['captchaResult'])) { session_start(); $_POST['captchaResult'] = strtolower($_POST['captchaResult']); $_SESSION['captchaResult'] = strtolower($_SESSION['captchaResult']); if($_POST['captchaResult'] === $_SESSION['captchaResult']) { //captcha OK on envoi le message $nom=$HTTP_POST_VARS['nom']; $email=$HTTP_POST_VARS['email']; $headers = "MIME-Version: 1.0\r\n"; $headers .= 'Content-type: text/plain; charset=UTF-8'."\n"; $headers .= 'From: <'.$email.'>'."\n"; $headers .= 'Cc: <'.$email.'>'."\n"; $headers .= 'Bcc: [email protected]'."\n"; $subject="Contact la personne sonemailun"; $destinataire="[email protected]"; $body="Ici, le message\n\nVous etes :\nNom : $nom\nPrenom : $prenom\nEmail : $email\nTelephone : $telephone\nObjet :$objet" ; mail($destinataire, $subject, $body, $headers); include("merci.php"); } else { //captcha faux include("erreur.php"); } } ?>
Ca marche à peu près.
Le visiteur remplit le form et marque son email ($email)

Le propriétaire du site reçoit les données du form :
$destinataire="[email protected]";

Moi (le "webmaster" qui connait rien au php(;o))) je reçois une copie cachée :
$headers .= 'Bcc: [email protected]'."\n";

Problèmes :
l'email reçu par la personne qui remplit le form, donne ceci :
------------------------
Content-type: text/plain; charset=UTF-8
From: <[email protected]>
Cc: <[email protected]>
Message-Id: <[email protected]>
Date: Thu, 28 May 2009 08:49:27 +0200 (CEST)
X-Antivirus: avast! (VPS 090527-0, 27/05/2009), Inbound message
X-Antivirus-Status: Clean

Site la dame :
Vous avez envoyé une demande de renseignement sur le site
www.sitedeladame.fr
Nous allons répondre à vos souhaits dans les meilleurs délais
Cordialement,
La dame

Vous etes :
Nom : test
Prenom : test
Email : [email protected]
Telephone : test
Objet :...quelques problèmes avec les lettres accentuées...
------------------------
- Donc il y a cet espèce d'entête que je sais pas d'où ça sort...
- Le problème avec les accentuées
-Impossible d'avoir des accents corrects en même temps sur "Vous etes, Prenom, telephone..." et sur le résultat tapé par le visiteur. Quand c'est bon d'un côté, c'est pas bon de l'autre.
- Les deux autres emails, envoyés à la dame du site et à moi, ils vont bien...!

C'est un peu long, désolé.
Si quelqu'un peu me dire qq chose... Grand merci.[/code]

Posté : 28 mai 2009, 15:46
par ludwig
Salut,

HTTP_POST_VARS ne doit plus s'utiliser depuis quelques années je pense, utilise $_POST à la place.

Ensuite tu as l'entête du mail qui passe dans le corps, il doit juste te manquer un retour chariot avant (\r\n ou juste \n à tester).

Pour tes accents, tu déclares l'email en UTF-8 dans l'entête donc soit tu encodes ta variable en UTF8 soit tu passe ton mail en ISO.

Posté : 28 mai 2009, 15:48
par metis15
...Ensuite tu as l'entête du mail qui passe dans le corps, il doit juste te manquer un retour chariot avant (\r\n ou juste \n à tester).
Bon, pour le charset, j'ai trouvé.

Reste ce problème avec le From :
$headers .= "From: $email\r\n";
Ca donne ceci...
------------------------
Content-type: text/plain; charset=iso-8859-1
From: [email protected]
Cc: [email protected]
Message-Id: <[email protected]>
Date: Fri, 29 May 2009 08:56:42 +0200 (CEST)
X-Antivirus: avast! (VPS 090528-0, 28/05/2009), Inbound message
X-Antivirus-Status: Clean

Nicole xxxxxxxxx
Une demande de renseignement à été faite sur le site
www.xxxxxxxxxxxxx.fr
Cette demande va être traitée dans les meilleurs délais
Cordialement,
Nicole xxxxxxxxxxx

Contact demandé par :
Nom : test 29/5 8h48
Prénom : test 29/5 8h48
Email : [email protected]
Telephone : test 29/5 8h48
Objet :test 29/5 8h48
------------------------

Ca donne ça dans Outlook Express mais dans Thunderbird ça marche et dans le webmail Orange ça va aussi sauf que le résultat du formulaire donne ceci :

------------------
Contact demandé par :
Nom : test 29/5 8h18
Prénom : test 29/5 8h18
Email : <span class="contextEntry" id="[email protected]_body">[email protected]</span>
Telephone : test 29/5 8h18
Objet :test 29/5 8h18
------------------

Donc au moins encore deux problèmes.
Je ne comprends pas...

==>COMPLEMENT :
Je viens de me rendre compte que je n'ai le problème que quand je fais le test avec une adresse [email protected]. Quand ça vient avec une adresse [email protected], il n'y a pas le problème.