Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Formulaire de contact avec envoie de Mail
#1
<r>Yop les gens.<br/>
<br/>
vous n'êtes pas sans savoir que pour le PPE, il faut créer un formulaire de contact ? si ? ben vous êtes sauvé grâce a papa Jenkins<br/>
<br/>
<br/>
En effet, je vais vous apprendre a créer une formulaire de contact directement relier à votre boite mail.<br/>
Afin faire ce tuto nous avons besoin de 5 chose :<br/>
-1 formulaire de contact<br/>
-1 le php permettant l'envoie sur mail<br/>
-MailDev<br/>
- Nodejs<br/>
- WAMP<br/>
<br/>
I) Le formulaire<br/>
Je vous laisse créer le votre de toute pièce, afin de nous aider plus tard je vais utiliser le mien que je nomme contact.php : <br/>
<br/>
<!DOCTYPE html><br/>
<html><br/>
<fieldset><br/>
<legend><br/>
Vos coordonnees<br/>
</legend><br/>
<br><br/>
<form method = "post" action = "<COLOR color="#FF0000"><s></s>contactEmail.php<e></e></COLOR>"><br/>
<label> <b>Nom :</b> </label><br/>
<input type ="text" name ="Nom" value = "Votre Nom" onclick ="Nom.value ='';" maxlength="20"> <br/>
<br><br/>
<br> <br/>
<label> <b>Prenom :</b> </label><br/>
<input type="text" name="Prenom" value = "Votre Prenom" onclick ="Prenom.value ='';"maxlength="20"><br/>
<br><br/>
<br> <br/>
<label> <b>Email:</b> </label><br/>
<input type="email" name="mail" value = "Votre Mail" onclick ="mail.value ='';"maxlength="30"> <br/>
<br><br/>
<br> <br/>
<label> <b>Commentaire:</b> </label><br><br/>
<textarea type="text" name="message" cols="100" rows="20"> Tapez votre commentaires</textarea> <br/>
<br><br/>
<br> <br/>
<input type = "submit" name ="contact" value = "contacter"><br><br/>
</form><br/>
</fieldset><br/>
</html><br/>
<br/>
<B><s></s><U><s></s></U></B><ALIGN align="center"><s>
</s><B><U>II) Le mail</U></B><e>
</e></ALIGN><i>
</i><br/>
Maintenant que vous avez votre formulaire, vous devez créer le php permettant l'envoie du mail. Pour ma part voici le mien (contactEmail.php) directement reliè à mon formulaire (à modifier pour coller à votre formulaire).<br/>
<br/>
<?php<br/>
/*<br/>
********************************************************************************************<br/>
CONFIGURATION<br/>
********************************************************************************************<br/>
*/<br/>
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule<br/>
$destinataire = '<COLOR color="#FF0000"><s></s><EMAIL email="nicolas.b24@hotmail.fr">nicolas.b24@hotmail.fr</EMAIL><e></e></COLOR>';<br/>
<br/>
// copie ? (envoie une copie au visiteur)<br/>
$copie = 'oui'; // 'oui' ou 'non'<br/>
<br/>
// Messages de confirmation du mail<br/>
$message_envoye = "Votre message nous est bien parvenu !";<br/>
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";<br/>
<br/>
// Messages d'erreur du formulaire<br/>
$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer le formulaire</a>.";<br/>
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";<br/>
<br/>
/*<br/>
********************************************************************************************<br/>
FIN DE LA CONFIGURATION<br/>
********************************************************************************************<br/>
*/<br/>
<br/>
// on teste si le formulaire a été soumis<br/>
if (!isset($_POST['contact']))<br/>
{<br/>
// formulaire non envoyé<br/>
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";<br/>
}<br/>
else<br/>
{<br/>
/*<br/>
* cette fonction sert à nettoyer et enregistrer un texte<br/>
*/<br/>
function Rec($text)<br/>
{<br/>
$text = htmlspecialchars(trim($text), ENT_QUOTES);<br/>
if (1 === get_magic_quotes_gpc())<br/>
{<br/>
$text = stripslashes($text);<br/>
}<br/>
<br/>
$text = nl2br($text);<br/>
return $text;<br/>
};<br/>
<br/>
/*<br/>
* Cette fonction sert à vérifier la syntaxe d'un email<br/>
*/<br/>
function IsEmail($email)<br/>
{<br/>
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?Sad?Sad?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?Sad?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);<br/>
return (($value === 0) || ($value === false)) ? false : true;<br/>
}<br/>
<br/>
// formulaire envoyé, on récupère tous les champs.<br/>
<COLOR color="#FF0000"><s></s>$nom = (isset($_POST['Nom'])) ? Rec($_POST['Nom']) : '';<br/>
$prenom = (isset($_POST['Prenom'])) ? Rec($_POST['Prenom']) : '';<br/>
$email = (isset($_POST['mail'])) ? Rec($_POST['mail']) : '';<br/>
<br/>
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';<e>
</e></COLOR><br/>
<br/>
// On va vérifier les variables et l'email ...<br/>
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré<br/>
<br/>
if (($nom != '') && ($prenom != '') && ($email != '') && ($message != ''))<br/>
{<br/>
// les 4 variables sont remplies, on génère puis envoie le mail<br/>
$headers = 'MIME-Version: 1.0' . "\r\n";<br/>
$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .<br/>
'Reply-To:'.$email. "\r\n" .<br/>
'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .<br/>
'Content-Disposition: inline'. "\r\n" .<br/>
'Content-Transfer-Encoding: 7bit'." \r\n" .<br/>
'X-MailerTongueHP/'.phpversion();<br/>
<br/>
// envoyer une copie au visiteur ?<br/>
if ($copie == 'oui')<br/>
{<br/>
$cible = $destinataire.','.$email;<br/>
}<br/>
else<br/>
{<br/>
$cible = $destinataire;<br/>
};<br/>
<br/>
// Remplacement de certains caractères spéciaux<br/>
$message = str_replace("'","'",$message);<br/>
$message = str_replace("’","'",$message);<br/>
$message = str_replace(""",'"',$message);<br/>
$message = str_replace('<br>','',$message);<br/>
$message = str_replace('<br />','',$message);<br/>
$message = str_replace("<","<",$message);<br/>
$message = str_replace(">",">",$message);<br/>
$message = str_replace("&","&",$message);<br/>
<br/>
// Envoi du mail<br/>
if (mail($cible, $prenom, $message, $headers))<br/>
{<br/>
echo '<p>'.$message_envoye.'</p>'."\n";<br/>
}<br/>
else<br/>
{<br/>
echo '<p>'.$message_non_envoye.'</p>'."\n";<br/>
};<br/>
}<br/>
else<br/>
{<br/>
// une des 3 variables (ou plus) est vide ...<br/>
echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";<br/>
};<br/>
}; // fin du if (!isset($_POST['envoi']))<br/>
header('location: <COLOR color="#FF0000"><s></s>contactMerci.php<e></e></COLOR>');<br/>
?><br/>
<br/>
Tous ce qui est en rouge doit être modifier afin de coller avec votre formulaire perso, sinon il y auras des erreurs.<br/>
<br/>
<B><s></s><U><s></s></U></B><ALIGN align="center"><s>
</s><B><U>III) MailDev</U></B><e>
</e></ALIGN><i>
</i><br/>
Maintenant que les PHP son prêt, vous vous rendez compte qu'il y a un erreur :<br/>
<br/>
" Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Site internet cybercafe\azerty.php on line 91"<br/>
<br/>
Et c'est normal, en effet votre site est hébergé en local et qu'il n'y a pas de boite mail de connecté. Pour cela on a besoin d'installer MailDev.<br/>
<br/>
Pour que mailDev s'installe, vous devez isntallet Nodjes (<URL url="https://nodejs.org/en/"><s>http://</s>https://nodejs.org/en/<e></e></URL>) en prennant la version stable. Un fois fait,ouvrez le panneau de commande (CMD) et tapper la commande suivante<br/>

<ALIGN align="center"><s>
</s>npm install -g maildev<e>
</e></ALIGN>

attendez la fin de l'installation. Un fois terminer tapper maildev dans la console pour ouvir MailDev.<br/>
Afin d'accéder à votre boîte mail local, taper localhost:1080 dans votre barre d'adresse.
<ALIGN align="center"><s></e></ALIGN>

C'est ici que vous recevrez les mail de contact car votre si est en localhost.<br/>
<br/>
<B><s></s><U><s></s>IV) changer le port de WAMP<e></e></U><e></e></B><br/>
Maintenant il faut changer le port SMPT de wamp en le passant de 25 à 1025.<br/>
Pour cela allez dans le fichier PHP config (php.ini)
<ALIGN align="center"><s></e></ALIGN>
puis ctrl+f "smtp" et faite suivant jusqu'à trouver smtp_port=25
<ALIGN align="center"><s></e></ALIGN>
mettez 1025 à la place du 25 et voila.<br/>
<br/>
C'est terminer, grâce à ce tuto vous pouvez recevrais des mails si le formulaire de contact sont remplie.<br/>
En cas de soucie laisser moi des screen, j'essayerais de vous aider du plus possible.</r>
<r><COLOR color="#FF00FF"><s></s></COLOR><ALIGN align="center"><s>
</s><COLOR color="#FF00FF">Pink Fluffy Unicorn Dancing On Rainbow</COLOR><e>
</e></ALIGN><i>
</i>
<ALIGN align="center"><s></e></ALIGN></r>
Répondre
#2
<r>Pour ceux qui ont un problème ligne 101 du PHP quand ils essayent d'envoyer le mail, aller dans le php.ini de Wamp et regarder que vous avez bien ceci :<br/>
; <URL url="http://php.net/smtp">http://php.net/smtp</URL><br/>
SMTP = localhost<br/>
; <URL url="http://php.net/smtp-port">http://php.net/smtp-port</URL><br/>
smtp_port = 1025<br/>
<br/>
Personnellement ça a résolu mon problème =)<br/>
<br/>
Cordialement, Horakle</r>
<r><SHADOW shadow="black"><s>[shadow=black]</s>Règle n°1: Je suis partout<e>[/shadow]</e></SHADOW><br/>
<SHADOW shadow="black"><s>[shadow=black]</s>Règle n°2: Je vois tout<e>[/shadow]</e></SHADOW><br/>
<SHADOW shadow="black"><s>[shadow=black]</s>Règle n°3: Je sais tout<e>[/shadow]</e></SHADOW><br/>
<B><s></s><GLOW glow="black"><s>[glow=black]</s>Je suis Horakle, je suis tout !<e>[/glow]</e></GLOW><e></e></B></r>
Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Boostez votre productivité avec Brackets ! Yhraen 0 821 04-12-2015, 13:18
Dernier message: Yhraen

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)