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 :

Question concernant l'envoi d'un formulaire par mail


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Par défaut Question concernant l'envoi d'un formulaire par mail
    Bonjour à tous,

    J'aimerais créer un formulaire qui enverrait ses données sur un email.
    J'ai trouvé un bout de code qui fait parfaitement le café, mais quand je le met à ma sauce il ne fonctionne plus.
    Pourriez-vous m'éclairer au sujet du problème ?

    Orginale:
    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
    <!doctype html>
    <html>
     
    <head>
        <meta charset="utf-8">
        <title>Contact</title>
    </head>
     
    <body>
        <h1>Contact</h1>
        <form method="post">
            <label>Nom</label>
            <input type="text" name="nom" required>
            <label>Email</label>
            <input type="email" name="email" required>
            <label>Message</label>
            <textarea name="message" required></textarea>
            <input type="submit">
        </form>
        <?php
        if(isset($_POST['message'])){
            $entete  = 'MIME-Version: 1.0' . "\r\n";
            $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
            $entete .= 'From: ' . $_POST['email'] . "\r\n";
     
            $message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
            <p><b>Nom : </b>' . $_POST['nom'] . '<br>
            <b>Email : </b>' . $_POST['email'] . '<br>
            <b>Message : </b>' . $_POST['message'] . '</p>';
     
            $retour = mail('destinataire@free.fr', 'Envoi depuis page Contact', $message, $entete);
            if($retour) {
                echo '<p>Votre message a bien été envoyé.</p>';
            }
        }
        ?>
    </body>
    </html>
    Mon code:
    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
    <!doctype html>
    <html>
     
    <head>
        <meta charset="utf-8">
        <title>Contact</title>
    </head>
     
    <body>
        <h1>Section Personnel</h1>
        <form method="post">
            <label>Genre : </label>
            <br>
            <input type="radio" value="madame" name="genre" checked>Madame
            <input type="radio" value="monsieur" name="genre">Monsieur
            <br>
            <br>
            <label>Nom : </label>
            <br>
            <input type="text" name="nom">
            <br>
            <br>
            <label>Prénom : </label>
            <br>
            <input type="text" name="prenom">
            <br>
            <br>
            <label>Adresse : </label>
            <br>
            <input type="text" name="adresse">
            <br>
            <br>
            <label>Ville : </label>
            <br>
            <input type="text" name="ville">
            <br>
            <br>
            <label>Code Postal : </label>
            <br>
            <input type="text" name="codepostal">
            <br>
            <br>
            <label>Téléphone : </label>
            <br>
            <input type="text" name="telephone">
            <br>
            <br>
            <label>Mail : </label>
            <br>
            <input type="email" name="email">
            <br>
            <br>
            <label>Remarque : </label>
            <br>
            <textarea name="remarque" cols="30" rows="5"></textarea>
            <br>
            <br>
            <input type="submit">
            <button type="reset">Reset</button>
        </form>
        <?php
        if(isset($_POST['message'])){
            $entete  = 'MIME-Version: 1.0' . "\r\n";
            $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
            $entete .= 'From: ' . $_POST['email'] . "\r\n";
     
            $message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
            <p><b>Genre : </b>' . $_POST['genre'] . '<br>
            <b>Nom : </b>' . $_POST['nom'] . '<br>
            <b>Prénom : </b>' . $_POST['prenom'] . '<br>
            <b>Adresse : </b>' . $_POST['adresse'] . '<br>
            <b>Ville : </b>' . $_POST['ville'] . '<br>
            <b>Code Postal : </b>' . $_POST['codepostal'] . '<br>
            <b>Téléphone : </b>' . $_POST['telephone'] . '<br>
            <b>Email : </b>' . $_POST['email'] . '<br>
            <b>Remarque : </b>' . $_POST['remarque'] . '</p>';
     
            $retour = mail('destinataire@free.fr', 'Envoi depuis page Contact', $message, $entete);
            if($retour) {
                echo '<p>Votre message a bien été envoyé.</p>';
            }
        }
        ?>
    </body>
    </html>

  2. #2
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Bonjour,

    Ton serveur est chez free.fr ?

    Si oui alors : ta fonction mail() est bloquée pour des raisons de sécurité.

    Faut passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" name="myFormFree" action="http://perso0.free.fr//cgi-bin/form2mail.pl">
    Part conséquent, ton header = tu l'oublies


    DS7

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Par défaut
    Citation Envoyé par Droïde Système7 Voir le message
    Bonjour,

    Ton serveur est chez free.fr ?
    Non il est cher OVH et comme dis plus haut la première version du code fonctionne, mais pas la seconde. Je ne vois pas d'où provient le problème.

  4. #4
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    En ce cas voici la chose interdite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $retour = mail('destinataire@free.fr',
    Car tu sors du domaine !

    Place une adresse OVH afin de te convaincre.

    DS7

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Par défaut
    Citation Envoyé par Droïde Système7 Voir le message
    En ce cas voici la chose interdite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $retour = mail('destinataire@free.fr',
    Car tu sors du domaine !

    Place une adresse OVH afin de te convaincre.

    DS7
    Chose interdit ?
    Sors du domaine ?
    Afin de me convaincre ?

    Je t'avoue que je comprends pas grand chose.. En gros, moi j'aimerais simplement savoir ce qui différencie du code originale au mien ?
    J'ai fais des test avec le code originale avec comme domaine monadresse@mail.com et ce la fonctionna correctement, mais avec mon formulaire il ne fonctionne plus.

  6. #6
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Remplace l'e-mail free.fr de ton formulaire, contre celle du domaine OVH, nous en reparlerons ensuite

    DS7

  7. #7
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Par défaut
    Citation Envoyé par Droïde Système7 Voir le message
    Remplace l'e-mail free.fr de ton formulaire, contre celle du domaine OVH, nous en reparlerons ensuite :P

    DS7
    Désolé pour le temps de réponse, j'en ai créer une et il y avait un délai de 5 à 10mn pour l'activation.
    Et toujours le même problème avec un mail OVH :/

  8. #8
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Idem :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $entete .= 'From: ' . $_POST['email'] . "\r\n";
    FROM doit être à l'intérieur de ton domaine !

    Autrement dit par exemple si un visiteur écrit un e-mail en gmail = ça fait mal (c'est killé directo sur server)

    Désormais trop eu de soucis et désormais ces échanges sont bien plus encadrés raisons de sécurité.

    DS7

  9. #9
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Par défaut
    Après avoir refais le code ligne par ligne (216 au total) j'ai trouvé (à la ligne 188 évidemment) d'où provenait l'erreur :

    Code originale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Message : </b>' . $_POST['message'] . '</p>';
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Remarque : </b>' . $_POST['remarque'] . '</p>';
    Il est essentiel de laisser le tag ['message'] sinon le code ne fonctionne pas.

  10. #10
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Ce n'est pas un tag, mais le nom de ton input

    Tant mieux si tu as trouvé tout seul.

    Ceci dit, mon conseil en message précédent est toujours d'actualité : si un visiteur par exemple possédant un e-mai gmail (via FROM) t'envoie un message, de grandes chances que ce dernier soit killé par un des serveurs au moment de la compil en moulinette...

    Pas interdit d'en faire feedback

    DS7

  11. #11
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Par défaut
    Ce formulaire est à titre personnel, il n'y a que moi qui est censé être amené à le remplir donc normalement il devrait pas y avoir de conflit (j'espère :p).
    Merci à toi pour l'aide et les précisions apportée :)

  12. #12
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Tout codeur est curieux par nature ; ce qui le pousse à avancer

    Tente de saisir par exemple : anarown@gmail.com

    Et tu vas voir que tu ne verras jamais arriver ce message de test.

    Car si le serveur de ton domaine ne le kille pas au passage, sois sans crainte que ceux de gmail n'en feront qu'une bouchée

    DS7

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

Discussions similaires

  1. Envoie d'un formulaire par mail en PHP
    Par Polychinelle dans le forum Langage
    Réponses: 9
    Dernier message: 28/12/2015, 11h49
  2. Envoi d'un formulaire par mail
    Par Néoservices dans le forum Langage
    Réponses: 0
    Dernier message: 30/09/2013, 16h46
  3. Envoi d'un formulaire par mail
    Par jer75 dans le forum Langage
    Réponses: 1
    Dernier message: 02/05/2008, 22h46
  4. Envoi d'un formulaire par mail
    Par Leimi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/08/2007, 16h59
  5. [Indy] Questions concernant l'envoi de mail
    Par delphicrous dans le forum Web & réseau
    Réponses: 3
    Dernier message: 24/06/2004, 16h06

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