if (@mail($email_webmaster,$_POST["nom"],$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
echo "Votre message a bien été envoyé. Nous vous répondrons dès que possible.
n";
echo "Retour à la page précédente...n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message
n";
echo "PHP_SELF"]."">Merci de réessayez...n";
}
}
?>
</html>
*****************
C'est donc quand j'essaie de le mettre à "ma sauce" que ça se complique.
J'obtiens systématiquement des erreurs. Mais pourquoi ?
Je séche depuis 4 heures (je précise que je ne connais rien au PHP) et j'ai besoin d'un (petit ?) coup de main.
Dans un 1er temps (et c'est déjà là que je bloque) je cherche à
rajouter le nom de l'expéditeur qui n'existait pas dans le formulaire
de base et de le récupérer dans l'email qu'il va m'adresser.
J'ai donc mis ceci dans la 1ère partie :
******
if (isset($_POST["nom"])) {
$_POST["nom"]=trim(stripslashes($_POST["nom"]));
}
et un peu plus bas dans cette partie toujours :
elseif (empty($_POST["nom"])) {
// il manque le nom de l'expéditeur
$erreur="Merci de donner votre nom.";
}
Le contrôle semble bien s'effectuer.
Dans la partie html j'ai donc rajouter un champ de cette manière :
<label for="nom">Votre nom (obligatoire):</label>
<?php
if (!empty($_POST["nom"])) {
// le nom de l'expéditeur a été saisi: le réafficher
echo htmlspecialchars($_POST["nom"],ENT_QUOTES);
}
?>" />
Pas de souci encore : tout s'affiche bien.
Et c'est dans cette dernière ligne que les choses se gâtent.
J'ai rajouté
$_POST["nom"]
ainsi :
// le formulaire a été soumis sans erreur, on envoie le mail
Sven78
Messages postés5Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention15 février 2007 15 févr. 2007 à 15:54
Merci beaucoup pour ta réponse si rapide lesdis.
Ce n'était pas dans le sujet mais dans le corps de l'email que je souhaitais récupérer le nom.
Effectivement je récupère un email comme tu l'as dis.
Merci aussi pour le lien de la page que j'ai épluché avec attention.
Malgré cela je ne comprends toujours pas pourquoi (alors que ce que tu indiques semble correspondre à ce que j'ai écris) ça ne marchait pas (peut être suis-je un peu fatigué).
Et je n'arrive pas à déplacer le nom dans le corps même du courriel.
PHP c'est pas évident au démarrage.
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 15 févr. 2007 à 16:17
Peux tu nous donner le passage que tu as réécris et qui n'a pas l'air de fonctionner?
Tu peux aussi enlever le @ qui empêche l'envoi de message d'erreur et le IF, afin de récupérer l'erreur.
Voici le code que je ferais pour insérer le nom dans le corps du message:
$_POST["message"] = "message envoyer par : $_POST["nom"]\n" . $_POST["message"];
mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)
Plusieurs choses supplémentaires à savoir :
- Les lignes du messages ne peuvent comporter plus de 70 caractères.
- Lorsque l'on test la fonction mail sur un hébergeur, il faut utiliser une adresse mail de type : expediteur@domaine.tld, où expediteur peut prendre n'importe quel valeur.
- Lorsque l'on test la fonction mail en local, il faut utiliser une adresse mail de notre fournisseur d'accès !
- Certains hébergeur (ex: online.net) ont désactiver la fonction mail pour la remplacer par une autre (combattons le spam !)
- Bien vérifier le dossier spam de la boîte au lettre de réception, les messages automatiques y sont souvent redirigés.
Sven78
Messages postés5Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention15 février 2007 15 févr. 2007 à 16:45
- Ce que j'avais écris ?
*****
if (@mail($email_webmaster,$_POST["nom"],$_POST["titre"],$_POST["message"],$entete)
***
et j'ai beau chercher : je ne vois pas la différence avec ce que tu avais écris la 1ère fois.
- j'ai inséré ton code mais j'obtiens cette fois-ci une erreur d'interprétation :
*****
Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /homepages/18/d192307286/htdocs/webmasterform.php on line 131
****
Il devait bien se substituer au code ci-dessus ?
- j'ai pris note de ce qu tu as précisé aussi : ce n'était pas inutile car j'ignorais 2 points que tu cites.
Merci encore de te pencher sur mon "cas".
J'espère ne pas être trop "boulet". ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 15 févr. 2007 à 17:10
>>
- Ce que j'avais écris ?
*****
if (@mail($email_webmaster,$_POST["nom"],$_POST["titre"],$_POST["message"],$entete)
***
et j'ai beau chercher : je ne vois pas la différence avec ce que tu avais écris la 1ère fois.
la fonction mail accepte 3 arguments obligatoires + 2 falcutatifs.
Dans l'ordre, il faut renseigner l'email du destinataire, le sujet du message, le corps du message, les entetes, les paramètres additionnels. Chaque arguments doit être séparés d'une virgule.
Dans ton exemple,
$email_webmaster = email du destinataire
$_POST['nom'] = sujet du message
$_POST['titre'] = corps du message
$_POST['message'] = entetes
$entete = parametre additionnels
Si l'on veut concaténée des chaines en php il faut utiliser le point, voici la différence avec ma premiere proposition :
@mail($email_webmaster,$_POST["nom"] . " " . $_POST["titre"],$_POST["message"],$entete)
Ici,
$email_webmaster = email du destinataire
$_POST['nom'] . " " .
$_POST['titre'] = sujet du message
$_POST['message'] = corps du message
Sven78
Messages postés5Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention15 février 2007 15 févr. 2007 à 17:34
(tu m'excuseras mais je n'arrive pas à utiliser l'éditeur avancé : mon post ne sera pas beau)
- tu dis :
Dans ton exemple,
$email_webmaster = email du destinataire
$_POST['nom'] = sujet du message
$_POST['titre'] = corps du message
$_POST['message'] = entetes
$entete = parametre additionnels
non ce n'est pas ça :
- nom c'est le nom de la personne qui remplit le formulaire (idéalement il devrait aller dans le corps)
- titre c'est le sujet
- message c'est le message déposé qui va se retrouver dans le corps
Après avoir lu, je cite :
"Dans l'ordre, il faut renseigner l'email du destinataire, le sujet du message, le corps du message, les entetes, les paramètres additionnels. Chaque arguments doit être séparés d'une virgule."
Je ne peux donc pas récupérer le nom du visiteur figurant dans le champ "nom" ?
Ou bien alors je dois aller le mettre ailleurs.