Mail php : pas d'envoi...

Résolu
Bonjour à tous !

J'ai un petit problème : je pense avoir fait un formulaire de contact qui marche (qui envoi en php à une page qui envoi le mail) mais je ne reçois aucun mail... comme si c'était bloqué par l'hébergeur.

J'ai essayé sur un autre hébergeur : même problème.

Vous pouvez trouver le site ici : http://dynami.hebergratuit.com
La page concernée est la page contact.html qui envoi le mail à formmail.php

Merci de vos idées !!!

--
Varaldi Q.
Laisse moi 2 minutes que j'te trouve un autre truc...

6 réponses

  1. Salut à tous !

    C'était bien l'hébergement qui était incompatible, bien que l'hébergeur lui-même ne le savait pas...
    1. Je n'ai pas encore regardé le contenu du mail lui même, mais déjà, peux-tu faire

      un die ('ok'); juste avant l'appel à mail pour voir que ça va bien jusque là ?
      Puis, si ça va bien retirer ce die et modifier le mail :
      if (mail($mail,$sujet,$message,$header)) die (' mail ok') ; else die('mail ko');


      Et enfin, ton location: ne veut rien dire. En tous cas, pas ce que tu crois : il faut faire
      header("Location: index.php");
      1. Bonjour,

        Vous vous embettez bien à tout construire. Si vous passez par Zend Framework, voici ce que donne un envoi de mail:

        // Utilisaton module Mail de Zend Framework 
        require_once 'Zend/Loader.php'; 
        Zend_Loader::loadClass ('Zend_Mail' ); 
        $mail = new Zend_Mail('UTF8'); 
        $mail->setBodyHtml($Message); 
        $mail->setFrom($_POST['from']); 
        $mail->addTo('---ici adresse mail destinataire----'); 
        $mail->setSubject(stripslashes($_POST['sujet'])); 
        ?> 
            <p><?php 
            try { 
                $mail->send(); 
            } catch (Exception $e) { 
                echo "Mailer Erreurs: ". $e->getMessage(); 
                die; 
            } 
            ?> </p>
            <b>le message a bien été transmis au <i>destinataire</i></b></p>


        En savoir plus sur Zend Mail:
        https://framework.zend.com/manual/1.12/fr/zend.mail.introduction.html

        A+
      2. Rien n'y fait, ni l'un, ni l'autre...

        Je pense qu'il y a un problème au niveau du serveur...
    2. Pour le formulaire : view-source:http://dynami.hebergratuit.com/contact.html

      Pour son traitement :

      <?php
      $mail = 'q.varaldi@gmail.com'; // Déclaration de l'adresse de destination.
      if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
      {
          $passage_ligne = "\r\n";
      }
      else
      {
          $passage_ligne = "\n";
      }
      //=====Déclaration des messages au format texte et au format HTML.
      $message_txt = "Nom : ".$_POST["nom"]."Société : "$_POST["societe"].$passage_ligne.$_POST["message"];
      $message_html = "Nom : ".$_POST["nom"]."Société : "$_POST["societe"].$passage_ligne.$_POST["message"];
      //==========
        
      //=====Création de la boundary
      $boundary = "-----=".md5(rand());
      //==========
        
      //=====Définition du sujet.
      $sujet = $_POST["objet"];
      //=========
        
      //=====Création du header de l'e-mail.
      $header = "From: \"Varaldi\"<q.varaldi@gmail.com>".$passage_ligne;
      $header.= "Reply-to: \"Varaldi\" <".$_POST["mail"].">".$passage_ligne;
      $header.= "MIME-Version: 1.0".$passage_ligne;
      $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
      //==========
        
      //=====Création du message.
      $message = $passage_ligne."--".$boundary.$passage_ligne;
      //=====Ajout du message au format texte.
      $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
      $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
      $message.= $passage_ligne.$message_txt.$passage_ligne;
      //==========
      $message.= $passage_ligne."--".$boundary.$passage_ligne;
      //=====Ajout du message au format HTML
      $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
      $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
      $message.= $passage_ligne.$message_html.$passage_ligne;
      //==========
      $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
      $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
      //==========
        
      //=====Envoi de l'e-mail.
      mail($mail,$sujet,$message,$header);
      //==========
      location:('index.php');
      ?>
      

      1. Ca serait vraiment bien ça, étant donné qu'il s'agit juste de serveurs provisoirs pour que je vois comment ça réagit online.

        On va croiser les doigts !
        1. Bonsoir,

          Souvent sur ce type d'hébergement, la fonction mail() est inhibée.

          A+