Formulaire PHP - Bonne reception du e-mail mais sans le contenu (vide)

Signaler
Messages postés
5
Date d'inscription
samedi 27 février 2010
Statut
Membre
Dernière intervention
17 octobre 2010
-
Messages postés
318
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
11 mars 2010
-
Bonjour, alors j'ai un gros probème ca fait une semaine que je cherche l'erreur de mon formulaire dont la reception du mail est VIDE. Cela dis je reçois bien l'e-mail mais sans son contenu.

Merci de votre aide.

Voici le code PHP:


<?php
$nom= $_POST['$nom'];
$prenom= $_POST['$prenom'];
$sujet= $_POST['$sujet'];
$email= $_POST['$email'];
$adresse="lemaireadrien59@gmail.com";
$from="From: $prenom $nom<$email>\r\n";
$from="Reply-To: $prenom $nom <$email>\n";
$from="X-priority:3\n";
$texte="<html>";
$texte="$texte";
$texte="</html>";
$from="MIME-Version: 1.0\r\n";
$from="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<center>

E-mail sent ! I will answer to you as soon as possible.Thanks you !

Click here to come back home</center>");
else
echo("<center>

You're e-mail can not be sent sorry for inconvenience.

Contact me in a normal way");
?>

</html>

6 réponses

Messages postés
318
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
11 mars 2010
1
Bonjour,


l'erreur se situe ici :

$texte="<html>";
$texte="$texte";
$texte="</html>";

A la fin ta variable ne contient que le balise de fermeture html.

Pour concatener des chaines de caractères tu dois utiliser le point :

$texte="<html>";
$texte.="$texte";
$texte.="</html>";

Ca devrait résoudre le problème.

Grrrrrrrrrrr
Messages postés
5
Date d'inscription
samedi 27 février 2010
Statut
Membre
Dernière intervention
17 octobre 2010

Bonjour et merci,

Je viens d'essayer mais l'e-mail est toujours vide
Messages postés
318
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
11 mars 2010
1
Bonjour,

Au temps pour moi, j'avais lu rapidement le code et j'avais pas vu le problème avec ta variable texte.

Voilà ce que fait ton code :

$texte="<html>"; //La variable $texte contient seulement "<html>"
$texte.="$texte"; //Tu ajoutes de nouveau la variable $texte, elle contient donc maintenant "<html><html>"
$texte.="</html>"; //Tu ferme la balise, la variable contient maintenant "<html><html></html>"

En gros à aucun moment tu ne met de message dans ton mail, normal donc qu'il soit vide.

D'où vient le texte que tu veux mettre dans ton message ?




Grrrrrrrrrrr
Messages postés
3
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
28 février 2010

boyss
Messages postés
5
Date d'inscription
samedi 27 février 2010
Statut
Membre
Dernière intervention
17 octobre 2010

Désolé je ne comprend pas vraiment tout ce que tu me dis... Je débute :s
Le texte vient de l'utilisateur qui souhaite m'envoyer un message par l'intermédiaire de mon site web.

Le message reste vide, ainsi que le sujet et l'email de la personne.
Messages postés
318
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
11 mars 2010
1
Bonjour,

Je vais essayer d'expliquer plus clairement et avec plus de détails.

Tout d'abord tu dois récupérer les valeurs à utiliser pour l'envoi du mail (le destinataire, le message, ...).

Pour cela, si ça vient d'un formulaire, c'est soit envoyé en POST soit en GET. La différence entre POST et GET c'est que les données en POST sont envoyée avec l'entête HTTP de la requête alors que celle en GET sont transmises dans l'url. Comme je ne sais pas comment tu les récupères je vais supposer que c'est en POST.

Pour récupérer un paramètre passé en post voilà ce que tu dois faire :

<?php

if(isset($_POST['nom'])){
$nom = $_POST['nom'];
}
else{
$nom = 'Inconnu';
}
}
?>

Ici tu utilisais $_POST["$nom"] hors $nom ne contenait rien donc c'est comme si tu essayais d'accéder à $_POST[''], donc la valeur est null. Cette remarque vaut pour les autres champs.

N'oublie pas de récupérer également le corps du message (le texte que tu veux mettre dans le mail).

Une fois que tu as tout ça, tu prépares tes variables utiles à l'envoi (tu le fais déjà mais avec des erreurs).

Lorsque tu écris un code ressemblant à <?php $variable = "blabla"; ?> alors la variable $variable contient "blabla" et tout ce qu'elle contenait avant est écrasé (perdu). Si tu veux ajouter du texte à une variable tu dois utiliser l'opérateur "point" comme ceci :

<?php
$variable = "du texte";
$variable .= " et encore du texte";
?>

A la fin de ce code, ta variable vaut "du texte et encore du texte" (ça te sera utile pour ton $from par exemple.


Enfin, tu envois le mail, ça tu sais faire.


J'espère n'avoir raté aucune de tes erreurs cette fois (j'ai tendance à lire un peu vite) et t'avoir aidé.




Grrrrrrrrrrr