Probleme d'envoi d'un mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme d'envoi d'un mail

par Invité » 27 août 2007, 12:30

J'en profite pour dire que je viens d'identifier le problème :
il n'était pas du coté de free ni du coté du code. En fait je testais en ligne via l'adresse du site et je n'avais pas remarqué que l'adresse se terminé par un point : elle était écrite sous la forme :
http//monsite.free.fr./, curieusement toutes mes pages se chargeaient et apparaissaient dans mon navigateur mais certaines parties du code ne marchaient pas dont la fonction mail().
Par contre en corrigeant l'adresse et en mettant :
http//monsite.free.fr/ et bien tout fonctionne à merveille !! Je suis désolé pour avoir négligé cet erreur et j'espère ne pas avoir fait perdre votre temps.

par Ryle » 27 août 2007, 10:59

Tu as du faire autre chose, car les espaces séparant les paramètres ne changent absolument rien...

Au lieu d'une application flash, fais toi un petit script php tout simple qui inclue et appelle ta fonction, cela te permettra de mettre des echos deci delà et voir dans quels structures il rentre ou pas en fonction des valeur.

Tu récupéreras également les warnings en cas de problème lors de l'envoi du mail...

A noter que si tu es chez free, ils semblent avoir des problèmes en ce moment avec l'envoi de mail, cf. un autre topic du forum

Edit : arf, j'avais pas vu que c'était toi qui avait posté le topic en question, tu as donc en principe eu la réponse à ta question ;)

par manheman » 26 août 2007, 19:09

Bon j'ai enlever les espaces vides dans :
if(mail($to, $subject, $msg, $headers)) par

if(mail($to,$subject,$msg,$headers))
et la j'ai le retour error=on mais pas de mail dans ma boite au lettre. Vraiment le perds la tete...

par Invité » 26 août 2007, 18:47

Et bien non je n'ai pas le "error=ok".
MOI je dirai que la fonction mail ne marche pas, à priori je ne rentre pas dans le else {
// To
$to = $email;

// Subject
$subject = "Club ELECTRONS : confirmation de votre inscription";

// Message
$msg = "Bonjour $pseudo etc...
Et pour info si j'enlève le code qui correspond à la fonction mail alors là j'ai bien le retour "error=ok". vers mon interface. J'en conclus que ma fonction mail qui "gène". Mais alors que faut-il modifier ?

par Ryle » 26 août 2007, 16:03

Bah la question est surtout de savoir ce que te retourne la fonction... as-tu bien "error=ok" ?

Que donne le test "if(!$query)" ? est-ce que tu rentres bien à chaque fois dans le else ?

Que retourne la fonction mail ? n'y a-t-il pas de message d'erreur ?

A noter par ailleurs qu'une variable entre apostrophe n'est pas interprétée aucune des variables à l'intérieur de ton message ne sera correctement renseigné (c'est pas pour rien qu'on passe notre temps à répéter qu'il faut sortir vos variables ;))

par manheman » 26 août 2007, 10:56

Je viens de tester en modifiant le code mais j'ai le même résultat à savoir une isncription dans la base de données mais pas de mail envoyé vers la personne qui s'est inscrite.

par Invité » 26 août 2007, 09:36

Oui l'inscription s'effectue sans problème, j'ai vérifié et toutes les données sont enregistrées dans la base. La partie qui n'est pas interprétée, c'est l'envoi du mail et le retour vers l'interface flash pour signaler que tout s'est bien passé. Curieusement si j'enlève la partie mail alors tout se passe bien, j'ai le retour vers l'interface flash pour signaler que tout est ok, j'en déduis qu'il y a un pb avec cette fonction mail (qui fonctionne avec l'hébergeur pourtant puisque que je l'utilise avec un autre code de newsletter).
Je vais essayé ta solution et je dis quoi.
Merci pour ta réponse !

Re: Probleme d'envoi d'un mail

par dunbar » 26 août 2007, 01:11

L'inscription est à 100 % correct ??

Sauf erreur de ma part (mais je me ferais vite remettre ne place :wink: ).
Parce que si je ne me trompe pas tu cache les erreurs MySQL avec ton @
Donc si il y à une erreur ton mail ne partira jamais, et comme celle-ci est cachée tu ne le sais pas :!:

ET comme ceci cela donne quoi :?:
$verif        = mysql_query("SELECT membrePseudo 
                                FROM $table 
                                WHERE membrePseudo = '".$pseudo."'"); 
   $num          = mysql_num_rows($verif); 
//si pas inscrit alors : 
if($num == 0) { 
   $query        = mysql_query("INSERT INTO 
                              $table (membrePseudo, membrePass, membreEmail, membreNom, membrePrenom, membreNaissance, membreVille, membreAdresse, membreCp, membreNiveau, membreFille, membreGarcon, membreNewsletter, membrePhrase, clef) 
                              VALUES ('".$pseudo."','".$pass."','".$email."','".$nom."','".$prenom."','".$naissance."','".$ville."','".$adresse."','".$cp."','".$niveau."','".$fille."','".$garcon."','".$newsletter."','".$phrase."','".$clef."')"); 
    if(!$query) 
   { 
      return "error=" . mysql_error(); 

Probleme d'envoi d'un mail

par manheman » 26 août 2007, 00:01

Bonsoir,
je m'arrache les cheveux depuis deux jours sur une partie de code qui ne s'interprète pas alors qu'elle a fonctionné un certains temps. J'ai un formulaire via une interface flash qui envoie les vaiables vers ma page php.

Je réceptionne ces variables et les utilise dans la fonction register (voir code).
Voici le principe : Si le pseudo existe alors on renvoit 'exist', si le pseudo n'existe pas alors on enregistre les données dans la bdd, si l'enregistrement est ok alors on anvoie un mail de validation à la personneqsui s'est inscrite et là ça coince, il n' y que l'enregistrement qui se fait pas de mail ni de retour ok vers flash.
function register($pseudo,$pass,$email,$nom,$prenom,$naissance,$ville,$adresse,$cp,$niveau,$fille,$garcon,$newsletter,$phrase )
{
   GLOBAL $db, $table;
   $pseudo = trim($pseudo);
   $pass = trim($pass);
   $email = trim($email);
   $nom = trim($nom);
   $prenom = trim($prenom);
   $naissance = trim($naissance);
   $ville = trim($ville);
   $adresse = addslashes(trim($adresse));
   $cp = trim($cp);
   $niveau = trim($niveau);
   $fille = trim($fille);
   $garcon= trim($garcon);
   $newsletter = trim($newsletter);
   $phrase = addslashes(trim($phrase));
   $pass = md5(trim($pass));
   $clef = "0123456789";
   $clef = rand();
   $confirm="confirm";
   // INSERTION DES DONNEES DANS LA TABLE PROVISOIRE MEMBRES_PR
$verif = mysql_query("SELECT membrePseudo from $table WHERE membrePseudo = '$pseudo'");
$num = mysql_num_rows($verif); 
//si pas inscrit alors :
if($num == 0) {
   $query = @mysql_query("INSERT INTO $table (membrePseudo,membrePass,membreEmail,membreNom,membrePrenom,membreNaissance,membreVille,membreAdresse,membreCp,membreNiveau,membreFille,membreGarcon,membreNewsletter,membrePhrase,clef) VALUES "."('$pseudo','$pass','$email','$nom','$prenom','$naissance','$ville','$adresse','$cp','$niveau','$fille','$garcon','$newsletter','$phrase','$clef')");
    if(!$query)
   {
      return "error=" . mysql_error();
   } else {
// To
$to = $email;

// Subject
$subject = 'Club ENS : confirmation de votre inscription';

// Message
$msg = 'Bonjour $pseudo

Félicitations ! Ton compte au Club ENS a bien été crée.

Nous vous envoyons ce message afin de vérifier que votre adresse email est valide.
Pour activer votre compte, nous vous demandons de cliquer sur le lien ci-dessous :

http://domaine.fr/php/validate.php?&pseudo=$pseudo&clef=$clef


Nous en profitons pour vous rappeler vos paramètres de connexion :
Pseudo : $pseudo
Mot de passe: $pass

Ces paramètres sont précieux et personnels. Ne les perdez pas.

Le club ENS vous souhaite la bienvenue !

Le webmaster du site ENS

http://domaine.free.fr';

// Headers
$headers = 'From: ELECTRONS <[email protected]>'."\r\n";
$headers .= "\r\n";

// Function mail()

    if(mail($to, $subject, $msg, $headers)){
	  return "error=ok";}
   }
   }  else { return "error=exist";
   } // end else
}//end fonction