Formulaire html envoi par mail [Résolu/Fermé]

Signaler
Messages postés
769
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
-
Messages postés
18537
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
10 avril 2021
-
Bonjour,
je viens de créer mon premier site. J'ai fait un formulaire dessus pour que les internautes puissent me poser des questions. J'aimerais que le contenu du formulaire soit envoyé sous forme de mail sur mon adresse mail.

Mon formulaire est ici : https://www.000webhost.com/migrate?static=true#question

Le problème est qu'au lieu d'envoyer le mail, le bouton envoyer ouvre Outlook, ce que je ne veux pas. J'ai lu plusieurs pages à ce sujet, il paraît qu'il faut utiliser du php... Mais je ne comprends rien, je n'ai pas appris le php. Pouvez-vous m'aider s'il vous plaît ?
Merci d'avance.

7 réponses

Messages postés
18537
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
10 avril 2021
4 281
Fallait le préciser, j'ai quelques tutoriels pour créer des formulaires et les envoyer par email ... sans ouvrir le client de messagerie.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


Bonjour,

Laisse tomber ton formulaire. Penche toi plutôt vers celui la : Formulaire de contacts

Messages postés
18537
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
10 avril 2021
4 281
Messages postés
769
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
330
Ok, je vais être clair...
Je dois apprendre comment cela fonctionne (pas d'assistant), je souhaiterais donc savoir comment envoyer ce mail. Le mail qu'affiche Outlook me convient mais j'aimerais qu'il soit envoyé et qu'il ne s'ouvre pas. Mon formulaire marche, il faut juste ajouter le code pour l'envoi.
Messages postés
769
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
330
Voici le code de mon formulaire (car je l'ai masqué sur le site (ça ne sert à rien que des internautes m'envoient des messages sans que je les reçois)) :

<table align="center" width="630" border="3" bordercolor="#0000FF" bgcolor="#00FFFF">
<tr><td>
<font color="#0000FF" face="Times New Roman" size="3.5">
<form method="post" name="postquestion" enctype="text/plain" action="mailto:contsite4095@hotmail.fr">
Prénom :
<input type="text" size="31" maxlength="20" name="prenom" /><br />
Pseudonyme :
<input type="text" size="26" maxlength="20" name="pseudo" /><br />
Adresse e-mail :
<input type="text" size="24" name="email" /><br />
Type de message :  <input type="radio" name="cat" value="question" checked="checked" /> question musicale     <input type="radio" name="cat" value="suggestion" /> suggestion<br />
Catégorie : 
<select name="categorie">
<option value="instruments">Instruments de musique et ensembles</option>
<option value="theorie">Solfège et lecture de partition (théorie)</option>
<option selected="true" value="autre">Générale</option>
<option value="jeux">Jeux</option>
</select>
<br />
Titre du message :<br />
<input type="text" name="sujet" size="92" maxlength="52" /><br />
Message :<br />
<textarea cols="72" rows="10" name="corps" value="texte">Bonjour,</textarea><br />
<br />
<input type="checkbox" name="oksite" checked="checked" value="siteok" /> Autoriser la publication du message sur ce site.<br />
<input type="checkbox" name="okmail" value="mailok" /> Envoi de la réponse par mail.*<br />
<br />
<input type="submit" name="envoi" value="Envoyer" />   
<input type="reset" name="annule" value="Effacer" />
</form>
</font>
</td></tr></table>

Je t'ai déjà dit de te pencher sur celui la.


<?php
    define( 'MAIL_TO', /* >>>>> */'ton adresse@blablabla.fr'/* <<<<< */ );  //ajouter votre courriel
    define( 'MAIL_FROM', 'Votre E-mail' ); // valeur par défaut
    define( 'MAIL_OBJECT', 'objet du message' ); // valeur par défaut
    define( 'MAIL_MESSAGE', 'votre message' ); // valeur par défaut

    $mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
    $errors = array(); // tableau des erreurs de saisie
    
    if( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]
    {
        $from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );
        if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut
        {
            $errors[] = 'Vous devez renseigner votre adresse de courrier &eacute;lectronique.';
        }
        elseif( $from === false ) // si le courriel fourni n'est pas valide
        {
            $errors[] = 'L\'adresse de courrier &eacute;lectronique n\'est pas valide.';
            $from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
        }

        $object = filter_input( INPUT_POST, 'object', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
        if( $object === NULL OR $object === false OR empty( $object ) OR $object === MAIL_OBJECT ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut
        {
            $errors[] = 'Vous devez renseigner l\'objet.';
        }

	/* pas besoin de nettoyer le message. 
	/	https://www.phpsecure.info/v2/article/MailHeadersInject.php
	/	Logiquement, les parties message, To: et Subject: pourraient servir aussi à injecter quelque chose, 	mais la fonction mail()
	/	filtre bien les deux dernières, et la première est le message, et à partir du moment où on a sauté une ligne dans l'envoi du mail,
	/	c'est considéré comme du texte; le message ne saurait donc rester qu'un message.*/
        $message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW );
        if( $message === NULL OR $message === false OR empty( $message ) OR $message === MAIL_MESSAGE ) // si le message fourni est vide ou égale à la valeur par défaut
        {
            $errors[] = 'Vous devez &eacute;crire un message.';
        }

        if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
        {
            if( mail( MAIL_TO, $object, $message, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
            {
                $mailSent = true;
            }
            else // échec de l'envoi
            {
                $errors[] = 'Votre message n\'a pas &eacute;t&eacute; envoy&eacute;.';
            }
        }
    }
    else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
    {
        $from = MAIL_FROM;
        $object = MAIL_OBJECT;
        $message = MAIL_MESSAGE;
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <title>Contact</title>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
        <meta http-equiv="content-language" content="fr" />
        <style type="text/css">
html{ font-family:Geneva, Arial, Helvetica, sans-serif; margin:0; padding:0; font-size:.88em;}
body{ width:772px; margin:0 auto; padding:0; }
textarea{ width:772px; }
label{ display:block; font-weight:bold; }
p#welcome{ padding:10px 20px; border:1px dotted #00f; color:#00f; font-weight:bold; }
ul{ padding:10px 20px; border:1px dotted #f00; color:#f00; font-weight:bold; }
p#success{ padding:10px 20px; border:1px dotted #0f0; color:#0f0; font-weight:bold; }
p em{ display:block; font-weight:normal; }
        </style>
    </head>
    <body>
        <img src="Image/contactlpm.png">
        <hr />
		<br>
		<a href="index.html">< - - - Retour à l'acceuil</a><hr />
<?php
    if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
    {
?>
        <p id="success">Votre message a bien &eacute;t&eacute; envoy&eacute;.</p>
        <p><strong>Courriel pour la r&eacute;ponse&nbsp;:</strong><br /><?php echo( $from ); ?></p>
        <p><strong>Objet&nbsp;:</strong><br /><?php echo( $object ); ?></p>
        <p><strong>Message&nbsp;:</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
		<a href="index.html">Retour à l'acceuil</a>
<?php
    }
    else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs
    {
        if( count( $errors ) !== 0 )
        {
            echo( "\t\t<ul>\n" );
            foreach( $errors as $error )
            {
                echo( "\t\t\t<li>$error</li>\n" );
            }
            echo( "\t\t</ul>\n" );
        }
        else
        {
            echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );
        }
?>
        <form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
            <p>
                <label for="from">Courriel pour la r&eacute;ponse</label>
                <input type="text" name="from" id="from" value="<?php echo( $from ); ?>" />
            </p>
            <p>
                <label for="object">Objet</label>
                <input type="text" name="object" id="object" value="<?php echo( $object ); ?>" />
            </p> 
            <p>
                <label for="message">Message</label>
                <textarea name="message" id="message" rows="20" cols="80"><?php echo( $message ); ?></textarea>
            </p>
            <p>
                <input type="reset" name="reset" value="Effacer" />
                <input type="submit" name="send" value="Envoyer" />
            </p>
        </form>
<?php
    }
?>
    </body>
</html>

Messages postés
769
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
330
Je me suis débrouillé et maintenant ça marche, mais avec MON formulaire !!!
Je n'ai pas envie d'être désagréable, mais copier quelque chose sans comprendre ne m'intéresse pas ...
Je devais savoir faire le fichier pour mon formulaire.

Ma solution est ici :

https://forums.commentcamarche.net/forum/affich-15904304-pb-php-formulaire-envoi-par-mail#15