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

Bibliothèques et frameworks PHP Discussion :

PHP mail en local - aucune action


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ingénieur
    Inscrit en
    Décembre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 20
    Par défaut PHP mail en local - aucune action
    Bonjour à tous.

    Ce matin, j'ai voulu coder en php un simple formulaire par lequel l'utilisateur peut envoyer un message par mail à un administrateur, le tout en local pour tester mon code.

    j'ai chercher un peu et ai été rapidement convaincu d'utiliser PHPMailer que j'ai donc télécharger.

    Seulement voila, après avoir créer mon code, le code semble s'exécuter sans qu'il ne se passe rien.

    Voici le code en question

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
    require_once 'PHPMailer/PHPMailerAutoload.php';
    public function sendmessage()
    {
    if(isset($_POST['message']))
    {
    if(!$_POST['message'] = null)
    {
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPDebug = 0;
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth = true;
    $mail->Username = 'mon.adresse@gmail.com';
    $mail->Password = '******';
    $mail->setFrom('test@gmail.com', 'First Last');
    $mail->addAddress('mon.adresse@gmail.com');
    $mail->Subject = 'Message from user';
    if(!$mail->send())
    {
    $message = "<script>alert('Le message n'a pas pu être envoyé);</script>";}
    $vue = new Vue("Contact","ContactMessage",$message);
    $vue->generer();
    }
    else
    {
    $message = "<script>alert('Message envoyé);</script>";
    $vue = new Vue("Contact","ContactMessage",$message);
    $vue->generer();
    }
    }
     
    }
    ?>
    J'ai fait des tests, $_POST['message'] est bien défini et contient bien la valeur que je souhaite.
    $message est normalement passé à ma vue qui affiche automatiquement le message...sauf que a rien. On dirait que le code s'exécute sans aucun résultat.

    j'ai l'impression que l'erreur est idiote...
    PS : j'ai chercher sur ce forum trouvant des sujet similaire mais dont aucune solution proposée n'a fonctionné...
    Merci de votre aide.

    Cdt

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et bienvenu sur DVP,

    1/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function sendmessage()
    Où est exécutée cette fonction ?

    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!$_POST['message'] = null)
    == ou ===

    N.B. on peut avantageusement remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['message']))
    3/ et $mail->body ?

  3. #3
    Membre averti
    Homme Profil pro
    ingénieur
    Inscrit en
    Décembre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 20
    Par défaut
    Bonjour et merci de la réponse.

    1/ Pour information, j'utilise l'architecture décrite ici : (pour l'instant le site ressemble à la partie "avant le passage au framworks" de ce tutoriel et j'ai quelque peu modifié la vue pour insérer des message très simple en js ainsi que l'architecture qui sépare le MVC en Bundle, je me demande d'ailleurs si ce n'est pas cette dernière partie qui me créerai des ennuis à cause de l'intégration de PHPMailer, mais l'objet PHPMailer s'instancie apparemment bien donc...).

    cette fonction est donc exécutée dans un controleur que voici :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?php
     
    require_once 'Vue.php';
    require_once 'PHPMailer/PHPMailerAutoload.php';
    require_once 'PHPMailer/class.smtp.php';
    class ControleurContact 
    {
     
      public function __construct() {}
     
      public function contact() {
      	if (isset($_SESSION['userid']))
      	{
      		if ($_SESSION['userid'] != null)
      		{
     	      	$vue = new Vue("Contact","ContactMessage");
    	    	$vue->generer();
      		}
      		else
      		{
    	      	$vue = new Vue("Contact","Contact");
    	    	$vue->generer();
      		}
      	}
      	else
      	{
         	$vue = new Vue("Contact","Contact");
        	$vue->generer();
      	}
      }
      public function sendmessage()
      	{
      		if(isset($_POST['message']))
      		{
      			if(!empty($_POST['message']))
      			{
      				$mail = new PHPMailer;
      				$mail->isSMTP();
    	  			$mail->SMTPDebug = 0;
    	  			$mail->Host = 'smtp.gmail.com';
    	  			$mail->Port = 587;
    	  			$mail->SMTPSecure = 'tls';
    	  			$mail->SMTPAuth = true;
    	  			$mail->Username = '*******@gmail.com';
    	  			$mail->Password = '*******';
    	  			$mail->setFrom('test@gmail.com', 'First Last');
    	  			$mail->addAddress('boucheron.julien@gmail.com');
    	  			$mail->Subject = 'Message from user';
    	  			//$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
    	  			$mail->AltBody = $_POST['message'];
    	  			if(!$mail->send())
    	  			{
    	 				$message = "<script>alert('Le message n'a pas pu être envoyé);</script>";}
    	      			$vue = new Vue("Contact","ContactMessage",$message);
    	      			$vue->generer();
    	  			}
    	  			else
    	  			{
    	  				$message = "<script>alert('Message envoyé);</script>";
    	      			$vue = new Vue("Contact","ContactMessage",$message);
    	      			$vue->generer();
    	  			}
      			}
     
      		}
     
    }
    et voici la vue qui contient le <form> qui appel cette action :
    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
    20
    21
    22
    <?php $this->titre = "LeSiteDeLaetitia - Contact"; ?>
     
     
    	<p>L'équipe :</p>
    		<p>    ******* : création, conception et préparation des kits.</p>
    		<p>    ***** : Aide de camps ! </p>
    		<p>    ***** : Informatique</p>
     
    <div id='send_contact'>
    		<form method="POST" action="index.php?action=Sendmessage" class="formulaire">
    			<div>
    			<fieldset>
    			<legend>Envoyer un message</legend>
    			<div>
    				<label for='pseudo'>Pseudonyme</label>
    				<textarea name='message' rows="20" cols="100" onfocus="if(this.value=='Tapez votre message ici'){this.value='';}">Tapez votre message ici</textarea>
    				<input type="submit" value="Envoyer">
    			</div>
    			</fieldset>
    			</div>
    		</form>
    	</div>
    et voici mon routeur

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?php
    require_once 'Accueil/ControleurAccueil.php';
    require_once 'Contact/ControleurContact.php';
    require_once 'Forum/ControleurForum.php';
    require_once 'Faq/ControleurFaq.php';
    require_once 'Membre/ControleurMembre.php';
    require_once 'Vue.php';
     
    class Routeur {
     
      private $ctrlAccueil;
      private $ctrlContact;
      private $ctrlForum;
      private $ctrlFaq;
      private $ctrlMembre;
      private $ismembre;
      public function __construct() 
      {
        $this->ctrlAccueil = new ControleurAccueil();
        $this->ctrlContact = new ControleurContact();
        $this->ctrlForum = new ControleurForum();
        $this->ctrlFaq = new ControleurFaq();
        $this->ctrlMembre = new ControleurMembre();
        $this->ismembre = $this->ctrlMembre->ismembre();
      }
     
      // Traite une requête entrante
      public function routerRequete() {
          if (isset($_GET['action'])) {
            if ($_GET['action'] == 'Accueil') {$this->ctrlAccueil->accueil();}
            elseif ($_GET['action'] == 'Contact') {$this->ctrlContact->contact();}
            elseif ($_GET['action'] == 'Sendmessage') {$this->ctrlContact->sendmessage();}
            elseif ($_GET['action'] == 'Forum') {$this->ctrlForum->forum();}
            elseif ($_GET['action'] == 'Faq') {$this->ctrlFaq->faq();}
            elseif ($_GET['action'] == 'Moncompte') {$this->ctrlMembre->moncompte();}
            elseif ($_GET['action'] == 'Modifinfos') {$this->ctrlMembre->modifinfos();}
            elseif ($_GET['action'] == 'Connexion') {$this->ctrlMembre->connexion();}
            elseif ($_GET['action'] == 'Deconnexion') {$this->ctrlMembre->deconnexion();}
            elseif ($_GET['action'] == 'Inscription') {$this->ctrlMembre->inscription();}
            elseif ($_GET['action'] == 'Changepassword') {$this->ctrlMembre->changepassword();}
            else $this->ctrlAccueil->accueil();}
          else {$this->ctrlAccueil->accueil();}
      }
    }
    le chemin est donc le suivant index.php(controleur frontal)→routeur→ctrlContact(controleur du bundle contact)→exécution de la fonction 'sendmessage".

    2/ effectivement, le code initiale était avec "!=" et pas "!" et plus loin "=". j'ai testé tellement de chose pour résoudre mon problème que j'en ai oublié les bases... Mais je vais effectivement replacer tout cela par la fonction empty. merci du conseil .

    3/...effectivement il est absent, mais pourtant bien présent dans mon controleur (sous la forme AltBody). j'ai surement du le supprimer lors du copier coller car je nous voulait pas encombrer le forum avec l'intégralité du controleur....mea culpa ^^ .

    Enfin malgré ces ocnseils avisé... ça ne fonctionne malheureusement toujours pas.

    Merci de cette réponses et au plaisir de vous lire.

    Cdt.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    le code semble s'exécuter sans qu'il ne se passe rien.
    As-tu débugué le déroulement dans ton script pour voir ce qu'il se passait ?

    Si tu n'obtiens aucun des messages javascript (echec/réussite) c'est
    - soit ta fonction sendmessage() n'est pas appellée
    - soit les conditions dedans ne sont pas vraies

    ça se détermine facilement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public function sendmessage()
      	{
            var_dump($_POST);
    Si tu obtiens le var_dump(), la fonction est bien appellée et le contenu du var_dump te dira pourquoi les conditions ne sont pas vraies.
    Si tu n'obtiens pas le var_dump(), il faut regarder l'endroit ou la fonction aurait du être appelée et procéder à la même démarche : que vaut $_GET['action'] etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    ingénieur
    Inscrit en
    Décembre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 20
    Par défaut
    J'ai testé ceci :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     public function sendmessage()
      	{
          var_dump($_POST);
      		if(isset($_POST['message']))
      		{
      			if(!empty($_POST['message']))
      			{
              var_dump($_POST);
      				$mail = new PHPMailer;
      				$mail->isSMTP();
    	  			$mail->SMTPDebug = 0;
    	  			$mail->Host = 'smtp.gmail.com';
    	  			$mail->Port = 587;
    	  			$mail->SMTPSecure = 'tls';
    	  			$mail->SMTPAuth = true;
    	  			$mail->Username = '*****@gmail.com';
    	  			$mail->Password = '*****';
    	  			$mail->setFrom('test@gmail.com', 'First Last');
    	  			$mail->addAddress('boucheron.julien@gmail.com');
    	  			$mail->Subject = 'Message from user';
    	  			//$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
    	  			$mail->AltBody = 'coucou';//$_POST['message'];
    	  			if(!$mail->send())
    	  			{
    	 				    $message = "<script>alert('Le message n'a pas pu être envoyé);</script>";
    	      			$vue = new Vue("Contact","ContactMessage",$message);
    	      			$vue->generer();
    	  			}
    	  			else
    	  			{
    	  				$message = "<script>alert('Message envoyé);</script>";
    	      			$vue = new Vue("Contact","ContactMessage",$message);
    	      			$vue->generer();
    	  			}
      			}
      	  }
      	}

    J'obtient bien les deux var_dump suivant
    array (size=1)
    'message' => string 'coucou' (length=6)
    array (size=1)
    'message' => string 'coucou' (length=6)


    Ce qui, si je suis bien ton raisonnement et le code ci-dessus, ne correspond à aucune des deux solutions..L (PS, le contenu de mon POST est bien "coucou").

    Mais aucune erreurs n'est levée et toujours pas de mail...

  6. #6
    Membre averti
    Homme Profil pro
    ingénieur
    Inscrit en
    Décembre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 20
    Par défaut
    Bonjour Bonjour.

    Est-ce qu'un bon samaritain aurait la solution qui résoudrait mon problème ?

    En cas de besoin voici un lien vers une copie du site en cours de développement https://www.dropbox.com/s/g5yno5zait...010h40.7z?dl=0
    Il est vraiment en cours de développement , aussi il manque bcp de chose c'est normal.

    Bonnes fêtes de fin d'années à tous !

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

Discussions similaires

  1. envoi d'un mail en local en php
    Par luce von der rost dans le forum Langage
    Réponses: 3
    Dernier message: 09/05/2016, 20h10
  2. Xampp Php : problème envoi mail en local.
    Par diabli73 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 03/12/2008, 15h28
  3. formulaire AJAX + PHP aucune action
    Par akrogames dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/05/2008, 15h48
  4. Réponses: 12
    Dernier message: 28/05/2007, 04h31
  5. php mail() +config internet
    Par djabara dans le forum Apache
    Réponses: 25
    Dernier message: 24/11/2005, 21h18

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