Bonjour,

Je tente de mettre en place un formulaire de contact sur mon site en suivant le tuto video de Grafikart :
http://www.grafikart.fr/tutoriels/php/formulaire-contact-avance-php-55

mais lors de l'envoi, j'ai cette ligne qui s'affiche :
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in E:\kunden\homepages\12\d420395883\www\new\pages\contact.php on line 44

La ligne 44 correspond a ceci :
44>>> if(mail($to,$sujet,$message)){
$erreur = "Nous avons bien reçu votre demande";
unset($NOM);
unset($PRENOM);
}

et vous pouvez trouver mon formulaire de contact ici:
http://meslin-batiment.com/new/pages/contact.php

Merci d'avance de votre aide.
Modérateur
Bonjour
Freemuse a écrit :

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in E:\kunden\homepages\12\d420395883\www\new\pages\contact.php on line 44

Sous Windows, il est nécessaire d'avoir une adresse d'envoi renseignée (de toute façon c'est mieux de le faire). Ceci soit en éditent le fichier php.ini en trouvant ces lignes:

; For Win32 only.
;sendmail_from = me@example.com

il faut retirer les ';' devant sendmail_from et remplacer l'adresse e-mail par votre adresse d'envoi.

Ou sinon à chaque appel à mail() le renseigner dans les en-têtes:


  mail($to,$sujet,$message, 'From: moi@exemple.com');
Re,

J'ai donc suivi le conseil de kustolovic en ajoutant :
'From: moi@exemple.com'
car je ne comprends absolument rien au php.ini... Smiley ohwell

Je reçois bien le formulaire sur mon mail mais malheureusement sans aucune données.
Aucun Nom, Prénom....... le mail est vide...

Une idée ?

Merci
Bonjour,

Pour ma part, je te conseillerais d'utiliser PHPMailer afin d'envoyer tes mails, d'une part : il utilise un SMTP externe (gmail par exemple), et il protège tous les envois de mail. En plus, c'est de l'objet, et ca te permet de bien définir tes paramètres d'envois de message.

Php mailer : https://github.com/Synchro/PHPMailer

Regarde dans les exemples afin de mettre en place ton envoi de mail. Si tu as du mal, n'hésites pas à demander, googler Smiley cligne

Tu peux chercher par exemple PHPmailer tuto gmail.
Bonjour a tous,

Je me permets de vous copier le code php ci-dessous car je ne comprends rien : (désolé Smiley confused de mon niveau) Je reçois le mail mais vide, aucune info du formulaire n'est transmise.

<?php
if(!empty($_POST)){
	extract($_POST);
	$valid = true;
	if(empty($NOM)){
		$valid=false;
		$erreurNOM="Vous n'avez pas indiqué votre NOM";
	}
	if(empty($PRENOM)){
		$valid=false;
		$erreurPRENOM="Vous n'avez pas indiqué votre Prénom";
	}
	if(empty($ADRESSE)){
		$valid=false;
		$erreurADRESSE="Vous n'avez pas indiqué votre adresse";
	}
	if(empty($POSTAL)){
		$valid=false;
		$erreurPOSTAL="Vous n'avez pas indiqué votre Code Postal";
	}
	if(empty($VILLE)){
		$valid=false;
		$erreurVILLE="Vous n'avez pas indiqué votre Ville";
	}
	if(empty($TEL)){
		$valid=false;
		$erreurTEL="Vous n'avez pas indiqué votre n° de téléphone";
	}
	if(empty($MAIL)){
		$valid=false;
		$erreurMAIL="Vous n'avez pas indiqué votre adresse mail";
	}
	if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$MAIL)){
		$valid=false;
		$erreurMAIL="Votre mail n'est pas valide";
	}
	if(empty($MESSAGE)){
		$valid=false;
		$erreurMESSAGE=" Merci de nous décrire votre projet";
	}
	if($valid){
		$to = "MonMail@mail.com";
		$sujet = "Contact MonMail@mail.com";
		if(mail($to,$sujet,$message, 'From: MonMail@mail.com')){
			$erreur = "Nous avons bien reçu votre demande";
			unset($NOM);
			unset($PRENOM);
			unset($ADRESSE);
			unset($POSTAL);
			unset($VILLE);
			unset($MESSAGE);
		}
		else{
			$erreur = "Une erreur est survenue";
		}
	}
}
?>


L'adresse du formulaire de contact est ci-dessous :
http://meslin-batiment.com/new/pages/contact.php

Merci d'avance de votre aide.
Modifié par 6l20 (10 Mar 2014 - 15:13)
Balise CODE PHP merci.

Avec indentation.

extract
à éviter. Gros problèmes de sécurité.

--

De plus faut mieux utiliser
 isset
en plus de
empty


--

Essaie en ajoutant les messages d'erreur


ini_set('display_errors', 1);
error_reporting(e_all);

Modifié par totopsy (10 Mar 2014 - 14:35)
Bonjour,

Suite au message de totopsy, j'ai changé le code en suivant un tuto phpmail. Mais malheureusement, j'ai toujours le même problème, je ne reçois pas les éléments du formulaire.

Voici le code :

<?php
$mail = 'MonMail@mail.com'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>";
//==========
 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Contact meslin-batiment.com";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"MESLIN Bâtiment\"<MonMail@mail.com>".$passage_ligne;
$header.= "Reply-to: \"MESLIN Bâtiment\" <MonMail@mail.com>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
?>


Et voici le lien duformulaire :
http://meslin-batiment.com/new/pages/contact2.php

Encore merci de votre aide.

*Merci d'utiliser les balises de colorisation syntaxique pour présenter votre code afin d'en faciliter la lecture Smiley cligne
Modifié par 6l20 (11 Mar 2014 - 09:29)
Je suis navré mais je ne comprends absolument rien... Smiley ohwell

J'essaye de faire fonctionner phpmailer mais j'ai un message d'erreur qui s'affiche :
Warning: file_get_contents(contents.html) [function.file-get-contents]: failed to open stream: No such file or directory in E:\kunden\homepages\12\d420395883\www\new\pages\contact3.php on line 7
Could not access file: images/phpmailer.gif Could not access file: images/phpmailer_mini.gif Mailer Error: Message body empty

Pour être franc, je ne connais rien au codage...C'est pour moi du grand charabia et je n'en vois pas le bout !!!

Connaissez-vous un logiciel dans le style de formallin qui génère automatiquement les scripts pour créer un formulaire sans pub ?