Formulaire avec reception par mail

Résolu
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai dû créer un site pour un petit hotel dans lequel il y a un formulaire. J'utilise "<form method="post" action="mailto:renaudclaus@hotmail.com" enctype="text/plain">" pour recevoir les informations par email, cependant, lorsque que je clique sur envoyer, j'ai deux fenêtres qui s'affichent (notemment outlook).

Je sais qu'il est possible de créer un script php permettant d'éviter ce genre d'apparation et de ne plus passer par outlook. Mais je ne m'y connais pas du tout en php. J'ai lu plusieur tutos et posts d'autres personnes ayant le même probleme mais je n'y comprend rien. Pourriez vous m'aider?

10 réponses

Yaninho Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   63
 
Un truc du genre :
<?php session_start(); ?>
<?php

	/*Récupération des variables du formulaire*/
	$nom = $_POST['nom'];
	$prenom = $_POST['prenom'];
	$email = $_POST['email'];
	$adresse = $_POST['adresse'];
	$cp = $_POST['cp'];
	$ville = $_POST['ville'];
	$tel = $_POST['tel'];
	$message = $_POST['message'];
	
	/*Mise en forme des variables*/
	if(!isset($prenom) OR $prenom == "")
		$prenom = "Aucun prénom n'a été renseigné";
	if(!isset($email) OR $email == "")
		$email = "Aucun email n'a été renseigné";
	if(!isset($adresse) OR $adresse == "")
		$adresse = "Aucune adresse n'a été renseignée";
	if(!isset($cp) OR $cp == "")
		$cp = "Aucun code postal n'a été renseigné";
	if(!isset($ville) OR $ville == "")
		$ville = "Aucune ville n'a été renseignée";
	
	/*Mise en forme de l'email*/
	$msg = "<p>Vous venez de recevoir un message depuis le formulaire du site : https://www.pagesjaunes.fr/ <br />
			Voici les informations : <br />
			Nom : $nom <br />
			Prénom : $prenom <br />
			Email : $email <br />
			Adresse : $adresse <br />
			Code postal : $cp <br />
			Ville : $ville <br />
			Téléphone : $tel <br />
			Message : $message</p>";

	/*Mise en forme des header*/
	$mail = $_POST['email'];
	$prenom_mail = $_POST['prenom'];
	
	if(isset($mail))
		$header = "From: \"$nom $prenom_mail\" <$mail>\r\n";
	else
		$header = "From: \"$nom $prenom_mail\" <contact@monsite.fr>\r\n";
		
	$header .= "MIME-Version: 1.0\r\n";
	$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
	$header .= "To: \"Mon Site\" <contact@monsite.fr>\r\n";
	$subject = "Contact depuis le site https://www.pagesjaunes.fr/";
	
	/*Envoi du mail*/
	if(mail("contact@monsite.fr", $subject, $msg, $header))
		$_SESSION['err'] = "Votre message a bien &eacute;t&eacute; envoy&eacute;. Nous vous en remercions et vous r&eacute;pondrons dans les meilleurs d&eacute;lais.";
	else
		$_SESSION['err'] = "Suite a une erreur, votre message n'a pas &eacute;t&eacute; envoy&eacute;. Merci de renouveller l'op&eacute;ration.";
	header('Location: contact.php');
?>

Avec dans contact.php
<form action="email.php" method="post" name="corpForm"  id="corpForm" ">


A peu près un truc dans ce genre là ;)
0
graffx Messages postés 6506 Date d'inscription   Statut Contributeur Dernière intervention   1 975
 
ou encore


http://ville-de-bernay.com/test/tuto.php?cat=1&scat=8&tuto=10
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Changes l'action du formulaire sur "sendmail.php" (par exemple).
Dans le fichier "sendmail.php", mets ce script :
<?php
$stripslashes = false;

if($stripslashes == true) {
     $_POST = array_map('stripslashes',$_POST);
}

$to = 'reception@example.com';
$subject = 'Contacte depuis le site';
$headers = 'X-Mailer: PHP/' . phpversion();

$message = '';
foreach($_POST as $k => $v) {
    $message .= $k.' : '.$v."\n";
}

if(mail($to,$subject,$message,$headers)) {
    header('Location : remerciements.html');
} else {
    echo 'Erreur lors de l\'envoie du mail.<br/>Vous pouvez nous contacter à <a href="mailto:'.$to.'">cette adresse</a>';
}
Sur "$stripslashes = false;", remplace "false" par "true" si tu vois des antislashes "\".
0
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Problème résolu à moitié :
j'ai suivi ton script, avion-f16, et il marche bien, je reçois le mail à mon addresse sans passer par outlook. Cependant, je suis redirigé vers un page blanche qui n'est autre que la page sendmail.php. Hors, j'aimerais être redirigé vers une page html de confirmation (que j'ai déja crée). Comment faire?
0
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
ok un grand merci pour votre rapidité, je vai essayer et je vous dis quoi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
je crois avoir resolu le probleme tout seul, vous me dites si c'est bon ou pas?

j'ai inclu le language html dans la page sendmail.php, ce qui fait que le mail est bien envoyé et la page sendmail est devenue la page de confirmation. Est-ce correcte?
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Normalement ça devrait fonctionner grâce à la ligne "header('Location : remerciements.html');".
Aucune erreur s'affiche ?
0
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai effectivement changer remerciement.html par une une de mes pages de confirmation pour qu'il m'y réoriente mais rien du tout...toujours page blanche mais je reçois bien le mail par contre.
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Il n'y a aucun espace avant "<?php" ?
0
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Non aucun, mais est que le fait d'avoir inclu le script dans une page htm renomée au format php est un souci?

car ainsi, quant les gens clique sur envoyer, ils sont redirigés vers sendmail.php qui est devenur la page de confirmation.
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Tu as fais les bonnes manipulation.
Esssaye en ajoutant "?>" à la fin, et "die();" après "header('Location : remerciements.html');"
0
Crere Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
ok merci beaucoup pour ton aide, c'est bien le die() qui manquait. Un grand très très grand merci!
bonne année
0