IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction envoi de mail qui n'envoi rien


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Par défaut Fonction envoi de mail qui n'envoi rien
    Bonjour, j'avais créé une fonction sendMail() qui fonctionnait bien sur un de mes autres sites, et là j'essaie de la mettre en place sur un autre site par un simple copier coller .... ça ne fonctionne pas ... J'ai pourtant essayé de réécrire les variables, modifier les textes en faisant des textes basiques, j'ai même écrit en toutes lettres les éléments dont a besoin la fonction sendMail() ... ça ne s'envoi pas donc je pense que le problème se situe dans la fonction même, elle est pourtant toute basique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /* Envoi d'un mail au format HTML */
    function sendMail($subject, $message, $to, $toName, $from, $fromName)
    	{ 
    	// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
         $headers  = "MIME-Version: 1.0" . "\r\n";
         $headers .= "Content-type: text/html; charset=utf-8" . "\r\n";
     
         // En-têtes additionnels
         $headers .= "To: " . $toName . " <" . $to . ">" . "\r\n";
         $headers .= "From: " . $fromName . " <" . $from . ">" . "\r\n";
         $headers .= "Cc: " . $to . "\r\n";
         $headers .= "Bcc: " . $to . "\r\n";
     
    	 if (mail($to, $subject, $message, $headers)) { return true; } else { return false; }
    	}
    Et, voici les mails qui devraient s'envoyer, je reprécise que j'ai déjà essayé de mettre du texte en brut à la place des variables, etc ... rien n'y fait .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $message=nl2br(htmlspecialchars(addslashes($message)));
    // Mail envoy&eacute; à l'utilisateur
    $messageUser='<p>Bonjour mme, m. '.$name.',<br /><br />Vous avez envoy&eacute; un message &agrave; <strong>'.TITLE.' " <a href="mailto:'.MAIL_ADMIN.'">'.MAIL_ADMIN.' "</a></strong> :</p>
    <h4 style="color:#990000; text-decoration:underline; text-align:center;">'.$subject.'</h4>
    <p style="color:#0033ff">'.$message.'</p>
    <p><i>Merci de nous avoir contact&eacute;, nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais .</i></p>';
    // Mail envoy&eacute; à l'administrateur
    $messageAdmin='<p>Bonjour, '.MAIL_NAME.',<br /><br />Vous avez re&ccedil;u un nouveau message de la part de <strong>'.$name.' " <a href="mailto:'.$mail.'">'.$mail.' "</a></strong> :</p>
    <h4 style="color:#990000; text-decoration:underline; text-align:center;">'.$subject.'</h4>
    <p style="color:#0033ff">'.$message.'</p>
    <p><i>Afin de lui r&eacute;pondre, il vous suffit de r&eacute;pondre &agrave; ce mail ...</i></p>';
    if (sendMail($subject, $messageAdmin, MAIL_ADMIN, MAIL_NAME, $mail, $name)==true && sendMail($subject, $messageUser, $mail, $name, MAIL_ADMIN, TITLE)==true) 
    {
    	//enregistrement dans bdd mais on s'en fiche pour le moment ...
    }
    else 
    { $erreur=1;
    	info("false","Erreur serveur : Le mail n'a pas p&ucirc; &ecirc;tre envoy&eacute; suite &agrave; un incident technique ... Pour renvoyer le message, actualisez la page puis cliquez sur 'ok' ."); 
    }
    ça m'affiche donc le message d'erreur : Erreur serveur : Le mail n'a pas p&ucirc; &ecirc;tre envoy&eacute; suite &agrave; un incident technique ...

    Merci beaucoup de votre aide ... comme quoi, on peut développer des fontionnalités complexes sans encombres, et des simples qui nous font perdre un temps fou et précieux .


    Edit : toutes les variables sont envoyées par un formulaire au préallable et extraites par la fonction extract();

    Edit 2 : je précise aussi que j'ai testé avec une simple fonction mail() et là le message s'envoi

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    La fonction mail est bloquée chez certains hébergeurs gratuits pour éviter que leurs serveurs servent de support à des programmes qui bombardent des spams.
    Oups, j'avais pas vu ton edit 2.

    Autre piste : Tu n'as aucune regex pour vérifier que c'est un format de mail avant de balancer. Ca coûte pas cher ça, on en trouver plein partout, des regex de mail.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Par défaut
    Merci quand même mais oui la fonction mail est bien activée, le ndd est en hébergement mutualisé donc bon ...

    Mon histoire est bien étrange haha c'est bisard :/ surement un petit truc de rien dutout qui m'échappe ...

    La regex existe bien mais je l'ai pas mise pour ne pas encombrer hihi

    et pour les escape : $message=nl2br(htmlspecialchars(addslashes($message)));

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Par défaut
    Une remarque toute bète à moi-même :

    y'aurait pas des $messageUser='' avec des "" dedans sur les balises html qui feraient interférence avec les "Cc ..." ?????!!!!!!

    Bin réponse : si ! j'ai donc, dans ma fonction sendMail remplacé bètement des doubles quotes par des simples quotes .... et la MAGIE ça fonctionne, logique remarque, erreur de débutant qui prouve que même avec l'expérience ... On peut se faire avoir, à bon entendeur si ma mésaventure peut servir à d'autres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon envoi de mail fonctionne mais envoi 5 mail
    Par blinkman04 dans le forum Langage
    Réponses: 0
    Dernier message: 17/04/2013, 11h37
  2. envoi de mail qui ne marche plus
    Par laurentSc dans le forum Langage
    Réponses: 1
    Dernier message: 07/08/2011, 10h39
  3. Réponses: 4
    Dernier message: 18/02/2008, 14h53
  4. L'envois de mail ne m'envois pas de mail ...
    Par PrinceMaster77 dans le forum ASP
    Réponses: 10
    Dernier message: 27/10/2004, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo