Formulaire ??

Bonjour,

J'ai créé un formulaire sur mon site. Le problème, lorsque je soumet le message ma boîte mail s'ouvre !!
J'aimerai que mon message parte directement chez le destinataire sans avoir à le retaper. Voilà mon script :

<form action="mailto:palbe@orange.fr" method="post">
Nom : <input type="text" name="Nom" size="20" maxlength="256"><br><br>
Prénom : <input type="text" name="prenom" size="20" maxlength="256"><br><br>
Téléphone : <input type="text" name="tel" size="20" maxlength="256"><br><br>
E-Mail : <input type="text" name="mail" size="20" maxlength="256"><br><br>
Votre message :<br><br><textarea name="message" cols="30" rows="10">

</textarea>
<input type="submit" value="envoyer">

</form>
Merci pour votre aide
arthur73
Configuration: Windows XP Internet Explorer 7.0

5 réponses

  1. Oui.
    Pour informations, on est obligé de passer par un serveur SMTP pour envoyer des emails.
    Avec un script côté client comme le XHTML, il faut donc que le client aie un serveur SMTP → le client mail s'ouvre
    Avec un script côté serveur comme le PHP, le serveur est souvent configurer pour utiliser un serveur SMTP mais ça dépends de l'hébergeur.

    Renommes ta page en .php et voilà le script
    <?php
    if($_POST['submitForm'] == 'true') {
    	$nom = trim($_POST['nom']);
    	$prenom = trim($_POST['prenom']);
    	$tel = trim($_POST['tel']);
    	$mail = trim($_POST['mail']);
    	$message = trim($_POST['message']);
    	
    	if(
    		empty($nom) ||
    		empty($prenom) ||
    		empty($tel) ||
    		empty($mail) ||
    		empty($message)
    	) {
    		echo 'Vous devez remplir tous les champs !';
    	} else {
    		if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i")) {
    			echo 'Adresse email invalide !';
    		} else {
    			$to = 'palbe@orange.fr';
    			$subject = 'Contact depuis le site';
    			$message = '';
    			foreach($_POST as $k => $v) {
    				$message .= $k.' : '.$v."\n";
    			}
    			$headers = 	'From: webmaster@example.com'."\r\n".
        					'Reply-To: '.$mail."\r\n" .
        					'X-Mailer: PHP/'.phpversion();
    			if(mail($to, $subject, $message, $headers)) {
    				echo 'Mail envoyé !';
    			} else {
    				echo 'Erreur lors de l\'envoye du mail';
    			}
    		}
    	}
    } else {
    ?><form action="" method="post">
    	<p>
    		<label for="nom"Nom : </label>
    		<input type="text" name="nom" id="nom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="prenom">Prénom : </label>
    		<input type="text" name="prenom" id="prenom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="tel">Téléphone : </label>
    		<input type="text" name="tel" id="tel" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="mail">E-Mail : </label>
    		<input type="text" name="mail" id="mail" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="message">Votre message :</label><br/>
    		<textarea name="message" id="message" cols="30" rows="10"></textarea>
    	</p>
    	<p>
    		<input type="submit" value="envoyer" />
    		<input type="hidden" name="submitForm" value="true" />
    	</p>
    </form><?php } ?>
    1. Merci pour la réponse,

      J'ai essayé ton script, 2 problèmes :

      - Des lignes de script apparaissent sur le haut de la page.

      - Dois je changer l'adresse suivante 'From: webmaster@example.com'

      Merci pour ton aide

      arthur73
  2. Ta page doit avoir l'extension ".php" et doit être sur un serveur.
    Voilà mon script corrigé (la ligne "From") :
    <?php
    if($_POST['submitForm'] == 'true') {
    	$nom = trim($_POST['nom']);
    	$prenom = trim($_POST['prenom']);
    	$tel = trim($_POST['tel']);
    	$mail = trim($_POST['mail']);
    	$message = trim($_POST['message']);
    	
    	if(
    		empty($nom) ||
    		empty($prenom) ||
    		empty($tel) ||
    		empty($mail) ||
    		empty($message)
    	) {
    		echo 'Vous devez remplir tous les champs !';
    	} else {
    		if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i")) {
    			echo 'Adresse email invalide !';
    		} else {
    			$to = 'palbe@orange.fr';
    			$subject = 'Contact depuis le site';
    			$message = '';
    			foreach($_POST as $k => $v) {
    				$message .= $k.' : '.$v."\n";
    			}
    			$headers = 	'From: '.$mail."\r\n".
        					'Reply-To: '.$mail."\r\n" .
        					'X-Mailer: PHP/'.phpversion();
    			if(mail($to, $subject, $message, $headers)) {
    				echo 'Mail envoyé !';
    			} else {
    				echo 'Erreur lors de l\'envoye du mail';
    			}
    		}
    	}
    } else {
    ?><form action="" method="post">
    	<p>
    		<label for="nom"Nom : </label>
    		<input type="text" name="nom" id="nom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="prenom">Prénom : </label>
    		<input type="text" name="prenom" id="prenom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="tel">Téléphone : </label>
    		<input type="text" name="tel" id="tel" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="mail">E-Mail : </label>
    		<input type="text" name="mail" id="mail" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="message">Votre message :</label><br/>
    		<textarea name="message" id="message" cols="30" rows="10"></textarea>
    	</p>
    	<p>
    		<input type="submit" value="envoyer" />
    		<input type="hidden" name="submitForm" value="true" />
    	</p>
    </form><?php } ?>
    1. Bonjour,

      J'ai toujours deux lignes de codes qui apparaissent sur ma page de formulaire !!

      Les voici :

      $v) { $message .= $k.' : '.$v."\n"; } $headers = 'From: '.$mail."\r\n". 'Reply-To: '.$mail."\r\n" . 'X-Mailer: PHP/'.phpversion(); if(mail($to, $subject, $message, $headers)) { echo 'Mail envoyé !'; } else { echo 'Erreur lors de l\'envoye du mail'; } } } } else { ?>

      Merci pour ton aide

      arthur73
  3. Ce n'est pas possible. Vérifie que ta page aie bien l'extension ".php" au lieu de ".html".
    Ensuite, tu dois lancer le script quand il est sur le serveur, pas en l'ouvrant avec un clic droit.
    1. Bonjour,

      J'ai bien une extension php, mais lorsque je copie ton script j'ai toujours deux lignes de codes qui apparaissent sur la page web.