8710 sujets

Développement web côté serveur, CMS

Salut à tous,


Sur mon site perso j'ai un formulaire qui quand il est validé m'envoie un email depuis une page php avec une commande de type mail($destinataire, $sujet, $message, $headers)

J'avais l'impression que cela fonctionnait bien jusqu'à présent mais je me suis aperçu que tous les messages n'arrivaient pas à destination.

J'ai fait le test moi même en envoyant plusieurs fois un message identique(pseudo, mail, message etc,etc) à des moments différents ( 30sec ou 2min d'intervalle) et parfois le message dans ma boite mail, parfois il n'y arrive pas( ni dans les spams ni ailleurs)

Qui pourrais me dire pourquoi il fait cela? Y a t'il une erreur de codage? J'ai essayé de changer l'adresse d'envoi mais c'est la même chose ( J'ai essayé free et gmail). J'ai remplacé les \r\n par \n comme j'ai pu le voir à certains endroits mais rien ne fait.
Voici le code que j'utilise pour m'envoyer le mail:

$ip = $_SERVER["REMOTE_ADDR"]; // on recupere l'adresse ip
$nom=$_POST['sonpseudo']; // on récupère le nom
$mail=$_POST['sonemail']; // on récupère l'e-mail
$sujet=$_POST['sonsujet']; // on récupère le sujet
$message=$_POST['sonmessage']; // on récupère le message
$check=$_POST['check']; // on récupère la case cochée ou pas
$date = date("Y/m/d H:i:s");

 

$headers = "MIME-Version: 1.0\n"; 
$headers .= "Content-type: text/plain; charset=iso-8859-1\n"; 
$headers .= "From: $nom <$mail>\nReply-to : $nom <$mail>\nX-Mailer [langue]HP"; 

$subject="$sujet";
$destinataire="adresse1@gmail.com,adresse2@free.fr";
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "                                         
<em>V</em>otre mail a été envoyé"; 
} else { 
echo "<em>U</em>ne erreur s'est produite"; 
} 


J'espère que quelqu'un aura une solution à mon problème.
D'avance merci
Bonjour,

il faut voir ça avec ton hébergeur car il n y a aucune raison que ton script ne fasses pas 2 fois la même chose.
Mais le code que j'utilise est ok? Y'a pas des choses à rajouter dedans pour qu'il soit "mieux" accepté par mon fournisseur (free pour le citer) ?
Merci pour les réponses.
Bonjour,

Attention, tu as problème de sécurité sur ton formulaire. Il faut que tu valide le format de l'adresse email. Sans cela c'est la porte ouverte à l'utilisation de ton serveur pour envoyer des spams.

La fonction mail te retourne quoi quand cela ne fonctionne pas ? Tu pourrait essayer d'écrire un log dans un fichier pour essayer de voir quand cela ne fonctionne pas. (données post, date, retour fonction mail..)
Salut,
sur la page "formulaire" j'ai mis un champ dans lequel l'internaute doit remplir son email. le champ est de type:
<input type="email"  name=" " id=" " size="45" maxlength="100" placeholder="votre email" required/>


donc je pense cela suffisant non? Il faut aussi mettre quelque chose en plus sur la page "envoi"

pour la seconde question benj :
Le problème c'est que la fonction mail fonctionne toujours quand je clique sur le bouton envoi du questionnaire (et que tous les champs sont remplis. Sinon un message dit que tel champ n'est pas remplis et le message ne s'envoit pas). A chaque fois que le formulaire est rempli et que je clique sur le bouton d'envoi, j'ai toujours le message que j'ai programmé du style "Votre mail est bien parti, merci et à bientôt."
Si le problème persiste, change d'hébergeur. Il n'y a pas de raison que cela fonctionne 1 fois sur 2.

richw a écrit :
donc je pense cela suffisant non? Il faut aussi mettre quelque chose en plus sur la page &quot;envoi&quot;

Non, il faut faire une vérification coté serveur. via par exemple filter_var($mail, FILTER_VALIDATE_EMAIL)
Ouais je pense que je vais changer d’hébergeur très vite car c'est frustrant de pas recevoir tous les messages et si tu dis qu'il n'y a aucun problème dans le code justifiant cette erreur ca ne peux venir que de là.

Je vais aussi mettre le code de vérification du cpté du serveur comme suggéré.
Merci benj pour tes réponses.