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 :

Formulaire de contact [ Classe Mail ]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut Formulaire de contact [ Classe Mail ]
    Bonjour à tous et merci d'avance de vos réponses ainsi que de votre aide.

    J'ai un petit problème concernant mon script d'envoi de mail... Le mail en question ne s'envoi pas.
    Je jette un coup d'oeil à mon script en mode debug, ligne par ligne et je récupère les bonnes informations du mail.

    Voici la classe :

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    <?php
     
    $email_admin="a*******0@gmail.com"; // Mon Email
    $message_min_length = 5; // Nombres de caractères Min pour le message
     
     
    class Contact_Form{
    	function __construct($details, $email_admin, $message_min_length){
     
    		$this->name = stripslashes($details['name']);
    		$this->email = trim($details['email']);
    		$this->subject = 'Contact du Website'; // Subject 
    		$this->message = stripslashes($details['message']);
     
    		$this->email_admin = $email_admin;
    		$this->message_min_length = $message_min_length;
     
    		$this->response_status = 1;
    		$this->response_html = '';
    	}
     
     
    	private function validateEmail(){
    		$regex = '/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i';
     
    		if($this->email == '') { 
    			return false;
    		} else {
    			$string = preg_replace($regex, '', $this->email);
    		}
     
    		return empty($string) ? true : false;
    	}
     
     
    	private function validateFields(){
    		// Check name
    		if(!$this->name)
    		{
    			$this->response_html .= '<p>Veuillez saisir votre Nom !</p>';
    			$this->response_status = 0;
    		}
     
    		// Check email
    		if(!$this->email)
    		{
    			$this->response_html .= '<p>Veuillez saisir votre Email ! </p>';
    			$this->response_status = 0;
    		}
     
    		// Check valid email
    		if($this->email && !$this->validateEmail())
    		{
    			$this->response_html .= '<p>Veuillez saisir une adresse email correct ! </p>';
    			$this->response_status = 0;
    		}
     
    		// Check message length
    		if(!$this->message || strlen($this->message) < $this->message_min_length)
    		{
    			$this->response_html .= '<p>Votre message doit contenir un minimum de '.$this->message_min_length.' caractères</p>';
    			$this->response_status = 0;
    		}
    	}
     
     
    	private function sendEmail(){
    		$mail = mail($this->email_admin, $this->subject, $this->message,
    			 "From: ".$this->name." <".$this->email.">\r\n"
    			."Reply-To: ".$this->email."\r\n"
    		."X-Mailer: PHP/" . phpversion());
     
    		if($mail)
    		{
    			$this->response_status = 1;
    			$this->response_html = '<p>Votre message a bien été envoyer !</p>';
    		}
    	}
     
     
    	function sendRequest(){
    		$this->validateFields();
    		if($this->response_status)
    		{
    			$this->sendEmail();
    		}
     
    		$response = array();
    		$response['status'] = $this->response_status;	
    		$response['html'] = $this->response_html;
     
    		echo json_encode($response);
    	}
    }
     
    $contact_form = new Contact_Form($_POST, $email_admin, $message_min_length);
    echo"<pre>"; print_r($contact_form);
    $contact_form->sendRequest();
     
    ?>

    et voici le formulaire [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
    16
    17
    18
    19
    20
     
     <form id="contact-form" class="contact-form" action="contact.php" method="POST">
                	<p class="contact-name">
                        <input id="contact_name" type="text" placeholder="Name" value="" name="name" />
                    </p>
                    <p class="contact-email">
                    	<input id="contact_email" type="text" placeholder="Email Address" value="" name="email" />
                    </p>
                    <p class="contact-message">
                    	<textarea id="contact_message" placeholder="Your Message" name="message" rows="15" cols="40"></textarea>
                    </p>
                    <p class="contact-submit">
                    	<!--<a id="contact-submit" class="submit" href="#">Envoyer</a>-->
                            <input type="submit" value="Envoyer" class="submit" id="contact-submit"/>
                    </p>
     
                    <div id="response">
     
                    </div>
                </form>
    Merci d'avance.

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Le mail n'est pas envoyé (mail vaut false) ou le mail n'est pas reçu (mail vaut true) ?

    Au passage
    Votre message a bien été envoyé
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Bien au contraire le mail est envoyé donc il est égal à true.
    J'ai la fonction "SendMail" qui est validé lors de l'envoi du mail.

    Mais je ne reçois rien.

    Voila ce que je retourne lorsque je complète le formulaire :

    Résultat var_dump et print_r:

    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
     
    <pre>Contact_Form Object
    (
        [name] => Anthony PALERMO
        [email] => test1@gmail.com
        [subject] => Contact from Your Website
        [message] => je suis ton test
     
        [email_admin] => a******0@gmail.com
        [message_min_length] => 5
        [response_status] => 1
        [response_html] => 
    )
    <br>object(Contact_Form)#1 (8) {
      ["name"]=>
      string(15) "Anthony PALERMO"
      ["email"]=>
      string(15) "test1@gmail.com"
      ["subject"]=>
      string(25) "Contact from Your Website"
      ["message"]=>
      string(18) "je suis ton test
    "
      ["email_admin"]=>
      string(26) "a*****0@gmail.com"
      ["message_min_length"]=>
      int(5)
      ["response_status"]=>
      int(1)
      ["response_html"]=>
      string(0) ""
    }
    {"status":1,"html":"<p>Votre message a bien \u00e9t\u00e9 envoyer !<\/p>"}

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Les mail sommaires envoyées par la fonction mail() ont tendant à finir dans les filtres antispam des serveurs SMTP.
    Essaie avec la classe PHPMailer, elle inclus un mode debugage qui donne des infos sur la réponse SMTP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Ha oui exact, je viens de voir ma boite de spam, tout mes mails se sont envoyé la dedans.
    Je vais voir ce que je peux faire pour y remédier.

    Merci.

    Je reviendrais vers vous avec le code modifié et validé.

Discussions similaires

  1. Envoi d'un formulaire de contact par mail et OVH !
    Par KREEN1978 dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2015, 14h18
  2. Formulaire de contact, e-mail n'est pas envoyé
    Par JonathanLeplang dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 19/04/2015, 19h42
  3. [PHP 5.0] Erreur envoi Formulaire de contact par mail
    Par mongolord dans le forum Langage
    Réponses: 7
    Dernier message: 18/05/2012, 17h37
  4. [Web Service] Envoyer formulaire de contact par mail via php
    Par ginger4957 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/06/2009, 15h53
  5. [Configuration] Formulaire de contact et envoi d'e-mail
    Par platonus2002 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 07/09/2007, 10h25

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