Menu

Envoie d'un mail automatique après soumission formulaire en php

Messages postés
2
Date d'inscription
lundi 11 mars 2019
Dernière intervention
11 mars 2019
- - Dernière réponse : jordane45
Messages postés
25031
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 mars 2019
- 11 mars 2019 à 22:52
Bonjour à tous,

J'ai un petit problème. Dans mon site, je voudrais recevoir un email reprenant le formulaire que l'utilisateur soumet.

Mon code a quelques soucis : Je reçois bien l'email, mais par contre, je n'ai pas le sujet, ni le corps du message ou encore l'expéditeur qui s'affiche dans le mail que je reçois.

J'ai essayé de deux façons différentes, sans succès :

Voici mes codes :

Formalaire (HTML) :
 <h2 id="devis"> Formulaire de contact et devis </h2>

				<form method="get" action="merci.php">

			<div>
				<label for="sujet"> Sujet : </label> 
				<select type ="select" name ="_mailsubj" id="sujet"/> 
					<optgroup label="Devis">
						<option value ="Devis -  Spa Aqualife 6" selected="selected"> Devis -  Spa Aqualife 6</option>
						<option value ="Devis - Spa Origami">Devis - Spa Origami</option>
						<option value ="Devis - Spa Sunset">Devis - Spa Sunset</option>
						<option value ="Devis - Spa Inground">Devis - Spa Inground</option>
					</optgroup>
					<optgroup label="Informations">
						<option value="Informations - Spa Aqualife 6">Informations - Spa Aqualife 6</option>
						<option value="Informations - Spa Origami">Informations - Spa Origami</option>
						<option value="Informations - Spa Sunset">Informations - Spa Sunset</option>
						<option value="Informations - Spa Inground">Informations - Spa Inground</option>
					</optgroup>
						<option value="Devenir Revendeur">Devenir Revendeur</option>
						<option value="Autres demandes">Autres demandes</option>
				</select>

			</br>


			Titre :

				<table>
						<tr>

						<td> <input type="radio" name="titre" value="Monsieur" id="Monsieur" checked="checked" />
						<label for="Monsieur"> Monsieur </label> </td>

						<td> <input type="radio" name="titre" value="Madame" id="Madame" />
						<label for="Madame"> Madame </label> </td>

						 <td> <input type="radio" name="titre" value="Mademoiselle" id="Mademoiselle" />
						<label for="Mademoiselle"> Mademoiselle </label> </td> </tr>
				</table>

			</div>
		
			<div id="container">
				<div> 
					<label for="Nom"> Nom :</label> </br>
					<input type ="text" name ="Nom" id ="Nom" placeholder="Ex : Dupont" required="required" /> 
				</div>
				
				<div> 
					<label for="Prenom"> Prenom : </label> </br>
					<input type ="text" name ="Prenom" id="Prenom" placeholder="Ex: Jean" required="required" /> 
				</div>

				<div> 
					<label for="Mail"> Adresse electronique : </label> </br>
					<input type ="email" name ="Mail" id="Mail"  placeholder=" Ex: Jean.Dupont@hotmail.com" required="required" />  
				</div>

				<div> 
					<label for="Tel"> Numéro de Téléphone : </label> </br>
					<input type ="tel" name ="Tel" id="Tel" placeholder="Fixe ou mobile" required="required" /> 
				</div>
			</div>

			</br>

			<div>
				<label for="mmessage"> Message : </label> </br>
				<textarea type ="text" name ="mmessage" id="mmessage" placeholder="Votre message ..." required="required"></textarea>
			</div>
			</br>



			<div id="container2"> <input type="submit" value="Envoyer" /> <input type="reset" value="Recommencer" =""> </div>

</form> 


J'ai essayé ceci en php :

1)
 <?php
$destinataire = 'Maxime.Willemet@student.ulg.ac.be';
// Pour les champs $expediteur / $copie / $destinataire, séparer par une virgule s'il y a plusieurs adresses
$expediteur = $_GET["Mail"];
$copie = $_GET["Mail"];
$copie_cachee = $_GET["Mail"];
$objet = $_GET["sujet"]; // Objet du message
$headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
$headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
$headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n";
$headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
$headers .= 'Cc: '.$copie."\n"; // Copie Cc
$headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
$message = $_GET["mmessage"];
if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
{
    echo 'Votre message a bien été envoyé ';
}
else // Non envoyé
{
    echo "Votre message n'a pas pu être envoyé";
}
?> 


et ceci :
 <?php
$destinataire = 'Maxime.Willemet@student.ulg.ac.be';
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire)){
    $passage_ligne = "\r\n";
}
else{
    $passage_ligne = "\n";
}
$boundary = "-----=".md5(rand());
// Pour les champs $expediteur / $copie / $destinataire, séparer par une virgule s'il y a plusieurs adresses
$expediteur = $_GET["Mail"];
$objet = $_GET["sujet"]; // Objet du message

$header = "From: <".$expediteur.">".$passage_ligne;
$header.= "Reply-to: <".$expediteur.">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;

$message = $passage_ligne."--".$boundary.$passage_ligne;
$message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message .= $passage_ligne.$_GET["mmessage"].$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;   

if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
{
    echo 'Votre message a bien été envoyé ';
}
else // Non envoyé
{
    echo "Votre message n'a pas pu être envoyé";
}
?> 


Quelques explications :
- J'aimerai recevoir un mail dont le sujet est le sujet de la demande choisi dans le formulaire (entre les sélect du code html)
- J'aimerai recevoir l'adresse de l'expéditeur dans la case expéditeur de mon mail (celle qu'il fournit dans le formulaire)
- J'aimerai recevoir dans le corps du mail, la demande entrée par l'utilisateur.

Avec les codes que j'ai essayé, j'obtiens ceci (voir photo)


Est-ce que l'un de vous comprends ce qui ne fonctionne pas ou pourrais m'aiguiller afin que je trouve une solution ?

Merci d'avance,
Bonne journée :)
Afficher la suite 

Votre réponse

1 réponse

Messages postés
25031
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 mars 2019
1907
0
Merci
Bonjour
Commence par utiliser POST au lieu de GET

Puis applique ceci:

http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
max_140
Messages postés
2
Date d'inscription
lundi 11 mars 2019
Dernière intervention
11 mars 2019
-
Bonjour,

Je suis obliger d'utiliser une méthode GET, c'est une de mes consignes
jordane45
Messages postés
25031
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 mars 2019
1907 > max_140
Messages postés
2
Date d'inscription
lundi 11 mars 2019
Dernière intervention
11 mars 2019
-
C'est bien dommage
Passe au deuxième point et reviens nous voir avec le code modifié et les éventuels messages d'erreur
Commenter la réponse de jordane45