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

Fermé
max_140 Messages postés 2 Date d'inscription lundi 11 mars 2019 Statut Membre Dernière intervention 11 mars 2019 - 11 mars 2019 à 18:42
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 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 :)
A voir également:

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 mars 2019 à 22:14
Bonjour
Commence par utiliser POST au lieu de GET

Puis applique ceci:

https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
0
max_140 Messages postés 2 Date d'inscription lundi 11 mars 2019 Statut Membre Dernière intervention 11 mars 2019
11 mars 2019 à 22:29
Bonjour,

Je suis obliger d'utiliser une méthode GET, c'est une de mes consignes
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > max_140 Messages postés 2 Date d'inscription lundi 11 mars 2019 Statut Membre Dernière intervention 11 mars 2019
11 mars 2019 à 22:52
C'est bien dommage
Passe au deuxième point et reviens nous voir avec le code modifié et les éventuels messages d'erreur
0