Rechercher : dans
Par :

XHTML/PHP Envoi d'un formulaire par mail

Dernière réponse le 26 jan 2009 à 11:13:51 houba_houbi, le 18 déc 2008 à 16:14:21 
 Signaler ce message aux modérateurs

Bonjour,

J'utilisais un script php pour envoyer un formulaire par email qui fonctionne. L'inconvénient c'est qu'il ouvre une page supplémentaire avec le message "votre message a bien été envoyé" avec un lien "retour". Or je souhaiterai que ce message soit affiché directement en dessous du formulaire après validation.

J'ai donc voulu l'adapter sur ma page, mais comme je suis débutante en php....
Le résultat est le message suivant : Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:xxxx on line 78

Ai-je oublié quelque chose?
Merci pour votre aide

Voici mon code :
<form id="form_contact" method="get" action="">
<label>* Votre nom</label>
<input class="input_txt" type="text" name="nom" id="nom" />
<label>* Votre e-mail</label>
<input class="input_txt" type="text" name="email" id="email" />
<label>Votre message</label>
<textarea name="message" id="message"></textarea>
<input name="envoyer" type="submit" class="input_btn_envoyer" value="Envoyer" />
</form>
<?php
$destinataire = "xxxx";
$objet = "Message pour Dividi";
$nom = $_GET['nom'];
$email = $_GET['email'];
$message = $_GET['message'];

$from = "\n\nExpéditeur: ".$email;
$contenu = "\n\nNom : ".$nom;
$contenu .= "\n\nEmail: ".$email;
$contenu .= "\n\nMessage: ".$message;
mail($destinataire,$objet,$contenu,$from);

if(mail($destinataire,$objet,$contenu,$from))
{
echo "<p>Votre message a bien été envoyé !</p>";
echo "<p>Une réponse vous sera donnée sous 48 h</p>";
}
?>

Configuration: Windows Vista
Firefox 3.0.4

Meilleures réponses pour « XHTML/PHP Envoi d'un formulaire par mail » dans :
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
[Outlook/ThunderBird/Incredimail] Envoi/Réception de mail VoirVous avez des problèmes d'envoi ou de réception de mail dans votre client de messagerie ? Cet article va vous aider à diagnostiquer le problème. 1. Introduction à la messagerie 2. Problèmes d'envoi de mail 3. Problèmes de réception de...
[Langages] Envoyer un mail avec pièce jointe VoirLes mails, tout comme les pages web, sont livrés avec des en-têtes (headers en anglais). Ces en-têtes servent à donner quelques détails nécessaires comme l'adresse du destinataire, celle de l'envoyeur, la date de l'envoi, le sujet du mail etc. Elles...

2

CZMASTER, le 18 déc 2008 à 16:21:15
  • +1

La variable $from est mal renseigné, remplace ta ligne par ça : $from ="From: ".$mail

Répondre à CZMASTER

6

 houba_houbi, le 26 jan 2009 à 11:13:51
  • +1

Bonjour,

Comme le serveur mail en local ne fonctionne pas, j'ai mis mon site en production.
J'ai modifié mon code php, mais il ne fonctionne toujours pas :
- je ne reçois pas le message (j'ai pourtant vérifier mon adresse mail, mis une autre, rien à faire !)
- le message de confirmation de l'envoi n'apparait pas en dessous du formulaire

Voici mon code :
<form id="form_contact" method="post" action="">
<label>* Votre nom</label>
<input class="input_txt" type="text" name="nom" id="nom" />

<label>* Votre e-mail</label>
<input class="input_txt" type="text" name="email" id="email" />

<label>Votre message</label>

<textarea name="message" id="message"></textarea>
<div id="form_infos">
<p><span class="txt_form"><br />
* Champs obligatoires</span></p>
<p> </p>
<p>
<input name="envoyer" type="submit" class="input_btn_envoyer" onclick="MM_validateForm('nom','','R','email','','RisEmail');return document.MM_returnValue" value="Envoyer" />
</p>
<p class="txt_form"> </p>
<p><br />
Ces informations sont destinées uniquement à XXX au traitement de votre demande.</p>
<p><br />
</p>
<p class="txt_form">Vous disposez d’un droit d’accès, de modification, de rectification et de suppression des données vous concernant (loi « Informatique et Libertés » du 6 janvier 1978). Pour toute demande, adressez-vous à XXX.</p></div>
</form>
-----
<?php
if(isset($_POST['submit']))
{
$to = "XXX";
$subject = "Message pour XXX";
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
//Génération du corps du mail. Ne pas changer le terme "From" : c'est une fonction php pour indiquer l'expéditeur dans l'entete du mail
$body = "From: $nom\n E-Mail: $email\n Message: $message\n";
//envoi du mail
echo "Le message a été envoyé !";
mail($to, $subject, $body);
}
?>


Merci pour votre aide

Répondre à houba_houbi

4

houba_houbi, le 18 déc 2008 à 18:39:49

Merci pour vos réponses rapides +++

Alors, le problème venait de la variable "from", je pensais que je pouvais changer le nom ;-)

Bon maintenant c'est mon serveur local qui n'ai pas configuré pour :
Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\.... on line 79
mais je ne sais pas quoi faire...

J'utilise Xampp, alors si quelqu'un sait?
Merci

Répondre à houba_houbi

5

houba_houbi, le 23 jan 2009 à 11:15:52

Bonjour,

Comme le serveur mail en local ne fonctionne pas, j'ai mis mon site en production.
J'ai modifié mon code php, mais il ne fonctionne toujours pas :
- je ne reçois pas le message (j'ai pourtant vérifier mon adresse mail, mis une autre, rien à faire !)
- le message de confirmation de l'envoi n'apparait pas en dessous du formulaire

Voici mon code :
<form id="form_contact" method="post" action="">
<label>* Votre nom</label>
<input class="input_txt" type="text" name="nom" id="nom" />

<label>* Votre e-mail</label>
<input class="input_txt" type="text" name="email" id="email" />

<label>Votre message</label>

<textarea name="message" id="message"></textarea>
<div id="form_infos">
<p><span class="txt_form"><br />
* Champs obligatoires</span></p>
<p> </p>
<p>
<input name="envoyer" type="submit" class="input_btn_envoyer" onclick="MM_validateForm('nom','','R','email','','RisEmail');return document.MM_returnValue" value="Envoyer" />
</p>
<p class="txt_form"> </p>
<p><br />
Ces informations sont destinées uniquement à XXX au traitement de votre demande.</p>
<p><br />
</p>
<p class="txt_form">Vous disposez d’un droit d’accès, de modification, de rectification et de suppression des données vous concernant (loi « Informatique et Libertés » du 6 janvier 1978). Pour toute demande, adressez-vous à XXX.</p></div>
</form>
-----
<?php
if(isset($_POST['submit']))
{
$to = "XXX";
$subject = "Message pour XXX";
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
//Génération du corps du mail. Ne pas changer le terme "From" : c'est une fonction php pour indiquer l'expéditeur dans l'entete du mail
$body = "From: $nom\n E-Mail: $email\n Message: $message\n";
//envoi du mail
echo "Le message a été envoyé !";
mail($to, $subject, $body);
}
?>


Merci pour votre aide

Répondre à houba_houbi