non reception de mail venant d'un formulaire

Petit nouveau ! | 3 Messages

21 oct. 2020, 01:11

Bonjour à tous,

J'ai un soucis d'envoi de donnés d'un formulaire sur une adresse mail :
Voici le code :

<?php
/* Récupération des informations du formulaire*/
if (get_magic_quotes_gpc())
{
$nom = stripslashes(trim($_POST['nom']));
$prenom = stripslashes(trim($_POST['prenom']));
$societe = stripslashes(trim($_POST['societe']));
$code = stripslashes(trim($_POST['code']));
$ville = stripslashes(trim($_POST['ville']));
$telephone = stripslashes(trim($_POST['telephone']));
$mail = stripslashes(trim($_POST['mail']));
$motif = stripslashes(trim($_POST['motif']));
$message = stripslashes(trim($_POST['message']));
}
else
{
$nom = trim($_POST['nom']);
$prenom = trim($_POST['prenom']);
$societe = trim($_POST['societe']);
$adresse = trim($_POST['adresse']);
$code = trim($_POST['code']);
$ville = trim($_POST['ville']);
$telephone = trim($_POST['telephone']);
$mail = trim($_POST['mail']);
$motif = trim($_POST['motif']);
$message = trim($_POST['message']);
}
/*Vérifie si l'adresse mail est au bon format */
$regex_mail = '/^[-+.w]{1,64}@[-.w]{1,64}.[-.w]{2,6}$/i';
/*Verifie qu il n y est pas d en tête dans les données*/
$regex_head = '/[nr]/';
/*Vérifie qu il n y est pas d erreur dans adresse mail*/
if (!preg_match($regex_mail, $mail))
{
$courriel = 1;
}
/* On affiche l'erreur s'il y en a une */
if (!empty($alert))
{
$courriel = 0;
}
/* On vérifie qu'il n'y a aucun header dans les champs */
if (preg_match($regex_head, $nom)
|| preg_match($regex_head, $prenom)
|| preg_match($regex_head, $societe)
|| preg_match($regex_head, $adresse)
|| preg_match($regex_head, $code)
|| preg_match($regex_head, $ville)
|| preg_match($regex_head, $telephone)
|| preg_match($regex_head, $mail)
|| preg_match($regex_head, $motif)
|| preg_match($regex_head, $message))
{
$alert = 'En-têtes interdites dans les champs du formulaire';
}
else
{
$header = 1;
}
/* On affiche l'erreur s'il y en a une */
if (!empty($alert))
{
$header = 0;
}
if (empty($telephone)
|| empty($nom)
|| empty($message))
{
$alert = 'Tous les champs doivent être renseignés';
}
else
{
$renseigne = 1;
}
/* On affiche l'erreur s'il y en a une */
if (!empty($alert))
{
$renseigne = 0;
}
/* Si les variables sont bonne */
if ($renseigne == 1 AND $header == 1 AND $courriel == 1)
{
/*Envoi du mail*/

/*Le destinataire*/
$to="[email protected]";

/*Le sujet du message qui apparaitra*/
$sujet="Demande de devis";
$msg = '';
/*Le message en lui même*/
/*$msg = 'Mail envoye depuis le site' "rnrn";*/
$msg .= 'Nom : '.$nom."rnrn";
$msg .= 'Prenom : '.$prenom."rnrn";
$msg .= 'Societe : '.$societe."rnrn";
$msg .= 'Adresse : '.$adresse."rnrn";
$msg .= 'Code : '.$code."rnrn";
$msg .= 'Ville : '.$ville."rnrn";
$msg .= 'Telephone : '.$telephone."rnrn";
$msg .= 'Mail : '.$mail."rnrn";
$msg .= 'Motif : '.$motif."rnrn";
$msg .= 'Message : '.$message."rnrn";

/*Les en-têtes du mail*/
$headers = 'From: MESSAGE DU SITE STRASSDEVIS<[email protected]>'."rn";
$headers .= "rn";
/*L'envoi du mail - Et page de redirection*/
mail($to, $sujet, $msg, $headers);
header('Location:http://www.strassdevis.fr/contactmerci.htm');
}
else
{
header('Location:http://www.strassdevis.fr/contactmerci.htm');
}
?>

Manifestement rien n'arrive sur le mail [email protected].
Le formulaire est une page html et le traitement est sur une page php. Les deux sont à la racine du site.
De plus je viens de constater que lorsque que je remplis les champs et que j'en oublie volontairement, je n'ai pas de message d'alerte alors que le script est censé avertir l’utilisateur.
Si quelqu'un peut me renseigner.....le php et moi ça date d'une semaine. Le script, plus haut, est une copie d'un site de partage et je l'ai adapté à mes critères.
Merci :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 oct. 2020, 08:21

Désactive la redirection (=met en commentaire les header(...)) et regarde si tu as des messages d'erreur qui s'affiche déjà.
Si tu n'en a pas, vérifie dans les logs de ton serveur.

Quoiqu'il en soit quand je vois la chaine de caractères "rnrn", je me dit que le code que tu as récupéré est incorrect.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

21 oct. 2020, 11:43

merci pour la réponse.
Les saut de ligne "rnrn" n'en sont pas, effectivement. Je vais les passer en "r\n"
Quand tu dis de désactiver la redirection, ça veut dire quoi ?

Mammouth du PHP | 2703 Messages

21 oct. 2020, 13:35

Quand tu dis de désactiver la redirection, ça veut dire quoi ?
mettre en commentaire, par exemple :
/*Les en-têtes du mail*/

commencer par ne mettre que
mail("[email protected]", "sujet", "msg");
permet de savoir si l'email part et est bien reçu (éventuellement en indésirable).

Petit nouveau ! | 3 Messages

21 oct. 2020, 15:32

j'ai mis les lignes en commentaires....sans changement, le mail n'arrive pas.
Ensuite tu évoques cette ligne : mail("[email protected]", "sujet", "msg");
chez moi c'est :mail($to, $sujet, $msg, $headers);........;tu veux dire que cette expression est fausse ? dans les parenthèses je dois mettre l'email de destination ? Même si celui-ci est déjà mentionné plus haut ?