Tom's Guide > Forum > Programmation > Formulaire mail - PHP
Mot :    Pseudo :           
 

Bonjour,

J'aimerai un formulaire pour envoyer des mails depuis mon site web vers mon adresse mail. Je ne connais aucune base en php, je n'y ai jamais touché (je ne connais que xhtml et css) et j'ai cherché sur internet s'il n'y avait pas des "modèles tout fait".

De ceux que j'ai essayé, soit les accents s'affichent mal dans le mail, soit j'ai une sorte d'email sans expéditeur ni nom où les infos sont dans le mail.

J'aimerai si possible un formulaire php qui permette de mettre son pseudo, son adresse mail (qui sera l'expéditrice du mail), l'objet du mail (qui sera objet dans la boite de réception) et le message. Enfin il faudrait une redirection vers la page merci.php (que j'ai déjà faite ;) ).

Merci beaucoup de votre aide !

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Recherche sur google la fonction mail();

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

Poste ce que tu as déjà fais, je vais jeter un coup d'oeil et faire ce que tu demandes.

------------------------------ Cordialement,
MoNsTeR
Répondre à MoNsTeR-77

J'ai trouvé un script qui fonctionne à merveille ici :

http://www.php-astux.info/script-f [...] ontact.php

J'aimerai simplement savoir pour que, après que la page traitement_formulaire.php, le visiteur soit dirigé vers une page Merci.html

Voici le code html de la page mecontacter.html :

Citation :

<form id="contact" method="post" action="traitement_formulaire.php">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom : </label><input type="text" id="nom" name="nom" tabindex="1" /></p>
<p><label for="email">Email : </label><input type="text" id="email" name="email" tabindex="2" /></p>
</fieldset>

<fieldset><legend>Votre message</legend>
<p><label for="objet">Objet : </label><input type="text" id="objet" name="objet" tabindex="3" /></p>
<p><label for="message">Message : </label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>
</fieldset>
<br/>
<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer votre mail !" /></div>
</form>



Voici le code php de la page traitement_formulaire.php :

Citation :

<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'monadresse@orange.fr';

// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'

// Messages de confirmation du mail
$message_envoye = "Votre message m'a bien été parvenu, je vous répondrai dans les plus brefs délais ! <a href=\"index.html\">Cliquez ici</a> pour revenir à l'accueil du site !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"mecontact.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$message = str_replace("&#039;","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace("&quot;",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("&lt;","<",$message);
$message = str_replace("&gt;",">",$message);
$message = str_replace("&amp;","&",$message);

// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>


Merci beaucoup de l'aide ^^


Message édité par Shin43 le 02-12-2008 à 06:33:01
Répondre à Shin43

Salut j'ai vu que tu été client orange si ton site est héberger chez eux il te propose un formulaire gratuit, tu peux mettre les champs que tu veux avec obligation de les remplir ou pas !
et bien évidement tu reçoit les réponse sur ta boite mail orange !

Ps: Ton adresse mail apparait sur ton message précédent je sais pas si c'est volontaire ou alors ré-édite ton message .
(la ou j'ai mis les étoiles)

Citation :

<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '*******************************';

// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'

Répondre à grhum64

J'ai édité (ça me dérange pas tellement mais pour bien faire j'ai changé).

Sinon, mon site n'est pas sur Orange mais sur Olympe-Network à vrai dire ^^''

Répondre à Shin43

c'est cool de dire que orange met un formulaire a la dispo des clients mais a l'arrivée ces enc...nous font payer le formulaire pour un an c'est 21€ trooooop classe
c'est sur je peux prendre la version allégée mais y'a 5 champs enfin bref..

un autre truc sje suis en train de mettre en place mon formulaire via lesiteduzero
et je voulais savoir si pour faire un form et qu'il me soit envoyé par mail est ce que je dois inserer les resultats dans ma bdd et après les retransmettre vesr ma boite mail ou est ce que je les transmet direct vers ma boite mail?

et 2° a-t-on besoin de js pour faire un form comme ca vu que tous les formulaires ont un js dedans parec que si je dois me taper encore un tuto sur le js c'est efferalgan 3g par jour la ..
merci de repondre..

Répondre à theboss83
Tom's Guide > Forum > Programmation > Formulaire mail - PHP
Aller à :

Il y a 329 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens