Problème email en php

Eléphanteau du PHP | 13 Messages

16 mars 2006, 06:37

J'ai un problème quand j'essaye de faire un script pour contact dans mon site:
http://quebec-host.com/index.php?Contact

Premièrement j'aimerais avoir une page de confirmation que le courriel a bien été envoyé et que l'utilisateur serait envoyé vers la page d'accueil.

Deuxièmement, l'email marche pas, je reçois rien dutout.

Voici le code en question:
<?php
$from = "webmail[ - @ - ]qc-graphix.net";
$Email = $_POST['Email'];
$nom = $_POST['nom'];
$site = $_POST['Site'];
$object = $_POST['sujet'];
switch($object)
   {
   case 'Infos':
$to = "[email protected]";
       break;
   case 'Support':
$to = "[email protected]";
       break;
   case 'Webdesign':
$to = "[email protected]";
       break;
   case 'Autre':
$to = "[email protected]";
       break;
   }
$msg = "Informations fourni:

Nom: ".$nom."
Email: ".$Email."
website: ".$site."

-------------Commentaire-------------

".stripslashes($_POST['Commentaires']);
echo $to;
print ("  ".$to);
mail ($to, $object, $msg, "From: $from");
Merci de votre aide!

-Éric

Eléphant du PHP | 136 Messages

16 mars 2006, 10:22

sur la fin du code il manque qq quotes

$msg = "Informations fournies : "; // ici

Nom: ".$nom."
Email: ".$Email."
website: ".$site."

-------------Commentaire-------------

".stripslashes($_POST['Commentaires']); // là il y a un pb aussi
echo $to;
print (" ".$to);
mail ($to, $object, $msg, "From:". $from); // et là elles n'étaient pas à la bonne place

Eléphanteau du PHP | 13 Messages

17 mars 2006, 00:28

C'est bien gentil de me dire les problèmes mais j'ignore comment les corriger, je débute appeine.


Eléphant du PHP | 136 Messages

17 mars 2006, 09:28

là où je t'ai mis //ici
tu mets la ligne que j'ai corrigé

ensuite je suppose que tu veux mettre les variables suivantes concaténées dans ton message
ce qui donne :

$msg = "Informations fournies : ";
$msg =."\nNom : ".$nom;
$msg =."\nEmail : ".$Email;
$msg =."\nwebsite : ".$site;
$msg =."\n".stripslashes($_POST['Commentaires']);

// puis on envoie le mail comme suit
mail ($Email, $object, $msg, "From :". $from);

le \n sert à présenter le message ligne à ligne

Eléphanteau du PHP | 13 Messages

18 mars 2006, 22:38

J'obtien encore une erreur, es-ce que ça peut provenir du HTML peut-être?

Voici le code que j'ai présentement:
<?php
$from = "webmail[ - @ - ]qc-graphix.net";
$Email = $_POST['Email'];
$nom = $_POST['nom'];
$site = $_POST['Site'];
$object = $_POST['sujet'];
switch($object)
   {
   case 'Infos':
$to = "[email protected]";
       break;
   case 'Support':
$to = "[email protected]";
       break;
   case 'Webdesign':
$to = "[email protected]";
       break;
   case 'Autre':
$to = "[email protected]";
       break;
   }
$msg = "Informations fournies : "; 

Nom: ".$nom."
Email: ".$Email."
website: ".$site."

-------------Commentaire-------------

".stripslashes($_POST['Commentaires']);
echo $to;
print ("  ".$to);
mail ($to, $object, $msg, "From:". $from);
?>
J'obtien ceci quand j'essaye d'envoyer un courriel:
Parse error: syntax error, unexpected ':' in /home/philus70/domains/quebec-host.com/public_html/contact.php on line 24
J'apprécie votre aide, merci beacoup!

-Éric

Eléphant du PHP | 254 Messages

18 mars 2006, 23:14

à ta ligne 24 ???
Essaye comme ça :
$msg = "Informations fournies : \n\n

Nom : ".$nom." \n
Email : ".$Email." \n
website : ".$site." \n ";
Je débute, mais je pense qu'il y a un parse error quelquepart, ta variable message est fermée là :
$msg = "Informations fournies : "; 
Le ; ferme ta variable, donc les données fournies derrière n'appartiennent pas au message d'où erreur....
Le \n te sert à aller à la ligne si tu souhaites que le message soit mis en forme. C'est l'équivalent du <br />
Pour le message de confirmation il faudrait voir ta page où se trouve le formulaire d'envoi :wink:
J'ai l'impression qu'il y a des erreurs sous ta ligne de commentaires :
"-------------Commentaire------------- "

$commentaires =".stripslashes($_POST['Commentaires']).";
echo $to;
print ("  ".$to);
mail ($to, $object, $msg, "From:". $from); 

?> 
Il te faut : la page du formulaire
La page qui traite les infos, ça peut être la même, mais moi j'utilise une autre..
Donc dans mon "form action", 'indique la page de traitement.
Dans celle-ci :
<?php require_once('../includes/connexion.php'); ?>
<?php 
// la variable $to defini l'adresse ou l'email sera envoyé 
$to=htmlentities('[email protected]'); 
$subject=htmlentities($_POST['sujet']); 

// le contenu c'est un exemple
$content=htmlentities('de : '.$_POST['nom'].' '.$_POST['prenom'].', 
Raison sociale : '.$_POST['rs'].'
Adresse : '.$_POST['adresse'].'
Telephone : '.$_POST['tel'].'
Email : '.$_POST['email'].'
Commentaire : 
'.$_POST['commentaire']); 

// on envoie 
mail($to, $subject, $content); 

?>
c'est un exemple basique.

Eléphant du PHP | 254 Messages

18 mars 2006, 23:59


Eléphanteau du PHP | 13 Messages

21 mars 2006, 06:28

Oulala, je suis étourdi à lire ça, si je prend le dernier code que vous avez donné je devrais être correcte si j'ai bien compris?

-Éric

Eléphant du PHP | 254 Messages

21 mars 2006, 10:42

et surtout ne pas oublier de mettre les principes de sécurité nécessaires :
pour chaque variable : par exemple :
//....début de ton code ton formulaire ???? tu peux le montrer ?
//..................
if (isset($_POST["nom"])) $login=trim($_POST["nom"]); 
else $nom=""; 
$nom= stripslashes($nom); 
$nom=trim(htmlentities($nom); 

if (isset($_POST["commentaire"])) $commentaire=trim($_POST["commentaire"]); 
else $commentaire=""; 
$commentaire= stripslashes($commentaire); 
$commentaire=trim(htmlentities($commentaire); 

if(!get_magic_quotes_gpc() ) 
{ 
$nom= addslashes($nom); 
$commentaire= addslashes($commentaire); 
} 
else 
{ 
$nom =str_replace("'","''",$nom); 
$commentaire =str_replace("'","''",$commentaire); 
} 
// de ce genre, mais encore une fois, je débute aussi, donc à faire confirmer ici, avant de valider ton formulaire !!!
// puis ajouter la fonction mail : 
mail ($to, $nom, $commentaire, $...., $.....);
?>
bon courage

Eléphanteau du PHP | 13 Messages

22 mars 2006, 00:34

//....début de ton code ton formulaire ???? tu peux le montrer ?
Euh, il est juste en haut, je devrais avoir plus de code que ça?

Sinon je ne comprend plus tout à fait le code, l'autre j'avais plusieurs email pour différents sujets. Celui si semble envoyer le courriel à une seul personne non?

-Eric

Eléphant du PHP | 254 Messages

22 mars 2006, 11:39

non le code de ton formulaire qui est sur la page contact
qui commence par
<form action="..." ...>
et qui se termine par </form>
Pour les envois de mail, tu peux rajouter les mails que tu souhaites...ce n'était qu'un exemple.
Pour mieux t'aider, il faudrait le code complet de la page.

Eléphanteau du PHP | 13 Messages

24 mars 2006, 02:06

Merci beaucoup de votre aide, vous me dépannez vraiment:

Code : Tout sélectionner

<h2>Contactez-Nous</h2> <div class="bloc"> Pour nous rejoindre veuillez répondre au formulaire ci-dessous :<br> <br> <form method=POST action=contact.php > <table> <tr><td><strong>Votre Nom/Prénom:</strong></td> <td><input type=text name=Nom size=30></td></tr> <tr><td><strong>Votre Email:</strong></td> <td><input type=text name=Email size=30></td></tr> <tr><td><strong>Adresse de votre site:</strong></td> <td><input type=text name=Site size=50></td></tr> <tr> <td><strong>Sujet du message:</strong></td> <td><select name="Sujet"> <option value="Infos">Informations <option value="Support">Support <option value="Webdesign">Webdesign <option value="Autre">Autre </select> </td></tr> <tr><td colspan=2><div align="center"><br> <strong>Votre message:</strong><br> <br> <textarea COLS=50 ROWS=6 name=commentaires></textarea> </div></table> <br> <input type=submit value=Envoyer> - <input type=reset value=Annuler> </form> <br> </div> <div class="contenu_bas"></div>

-Éric

Eléphant du PHP | 254 Messages

24 mars 2006, 17:34

Voici ce que je te propose.
Encore une fois, c'est une idée....
Fais la vérifer par quelqu'un de plus expérimenté que moi.
Mais j'ai bâti mes pages de cnotact sur la base de tutos pour débutants.

voilà voilà en espérant te sortir de là :wink:
<?php 
// INIT DES VARIABLES
if(!isset ($_POST['Nom'])) $Nom=""; else $Nom=htmlentities(addslashes($_POST['Nom'])); // on initialise la variable 'nom' pour personnaliser le message de confirmation d'envoi du mail - pour éviter aussi qu'il ne retape son nom si erreur
if(!isset ($_POST['Email'])) $Email=""; else $Email=htmlentities(addslashes($_POST['Email'])); //variable email pour faire la vérif
if(!isset ($_POST['Site'])) $Site=""; else $Site=htmlentities(addslashes($_POST['Site']));
if(!isset ($_POST['commentaires'])) $commentaires=""; else $commentaires=htmlentities(addslashes($_POST['commentaires']));
// préparation du mail
$from=htmlentities("From: ".$Email);
$to=htmlentities('webmail[ - @ - ]qc-graphix.net'); //Adresse où l'on envoie les mails - j'imagine que tu as écris comme cela [ - @ - ] pour éviter le spam
$subject = $_POST['Sujet']; 
switch($subject) 
   { 
   case 'Infos': 
$to = "[email protected]"; 
       break; 
   case 'Support': 
$to = "[email protected]"; 
       break; 
   case 'Webdesign': 
$to = "[email protected]"; 
       break; 
   case 'Autre': 
$to = "[email protected]"; 
       break; 
   }
// contenu du mail = message
$content=stripslashes(htmlentities('de : '.$_POST['Nom'].' 
Email : '.$_POST['Email'].'
Site : '.$_POST['Site'].'
Sujet : '.$_POST['Sujet'].'
Message : '.$_POST['commentaires'])); // contenu du message
//envoi du mail
        mail($to, $subject, $content, $from);

?>

Code : Tout sélectionner

<html> <head></head> <body> <h2>Contactez-Nous</h2> <div class="bloc">Pour nous rejoindre veuillez répondre au formulaire ci-dessous :<br><br> <form method="post" action="contact.php"> <table> <tr> <td><strong>Votre Nom/Prénom:</strong></td> <td><input name=Nom type=text value="<?php echo $Nom;?>" size=30></td> </tr> <tr> <td><strong>Votre Email:</strong></td> <td><input name=Email type=text value="<?php echo $Email;?>" size=30></td> </tr> <tr> <td><strong>Adresse de votre site:</strong></td> <td><input name=Site type=text value="<?php echo $Site ;?>" size=50></td> </tr> <tr> <td><strong>Sujet du message:</strong></td> <td><select name="Sujet"> <option value="Infos">Informations <option value="Support">Support <option value="Webdesign">Webdesign <option value="Autre">Autre </select></td> </tr> <tr> <td colspan=2><div align="center"><br><strong>Votre message:</strong><br><br> <textarea COLS=50 ROWS=6 name=commentaires><?php echo $commentaires;?></textarea> </div> </td> </table> <br><input type=submit value=Envoyer> - <input type=reset value=Annuler> </form> <br> </div> <div class="contenu_bas"></div> </body> </html>
Le tout est sur la même page. le code PHP en haut et ensuite les balises body.
voilà, normalement ça fonctionne...teste-le

Eléphanteau du PHP | 13 Messages

25 mars 2006, 01:47

Classe, elle fonctionne, je viens tout juste de la tester.

Y aurait-il moyen d'ajouter une page de confirmation pendant 5 seconde ensuite elle revient sur la page d'accueil. Comme dans les forums IPB dans le fond.

-Éric

Eléphant du PHP | 254 Messages

25 mars 2006, 12:11

ben pour cela, dans ce cas, il faudrait envisager de créer une page de traitement de ton formulaire.
if (la condition) = OK {
.../... on envoie le mail et on met n message de félicitations
Sinon
}else{
../.. on indique les messages d'erreurs (champs vides par exemple ou une adresse email invalide).
Tu gardes ta page contact.php avec juste ton formulaire de départ. tu changes l'action du formulaire par "envoi.php" par exemple.
Donc le champ action="envoi.php" par exemple
La page envoi.php ressemblerait à à ça :
<?php 
$success=false; // init des variables
$message="";
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; // vérif de l'email
if(!isset($_POST['Nom'])) $Nom=""; else $Nom=htmlentities(addslashes($_POST['Nom'])); // on initialise la variable 'nom' 
if(!isset($_POST['Email'])) $Email=""; else $Email=htmlentities(addslashes($_POST['Email'])); //variable email pour faire la vérif 
if(!isset($_POST['Site'])) $Site=""; else $Site=htmlentities(addslashes($_POST['Site'])); 
if(!isset($_POST['commentaires'])) $commentaires=""; else $commentaires=htmlentities(addslashes($_POST['commentaires'])); 
if(!isset($_POST['Sujet'])) $subject=""; else $subject=htmlentities(addslashes($_POST['Sujet']));
	if(($Email) && (preg_match($verif, $Email))) { // si le mail est bon
		if (trim($commentaires)!=="") { //s'il y a un commentaire
		// préparation du mail 
		$from=................
		$to=...................		
        $subject = $_POST['Sujet']; 
		switch($subject) //ton switch
		 {.../...} 
		// contenu du mail = message 
		$content=stripslashes(htmlentities('de : '.$Nom.' 
		Email : '.$Email.' 
		Site : '.$Site.' 
		Sujet : '.$subject.' 
		Message : '.$commentaires)); // contenu du message 
		mail($to, $subject, $content, $from); //on envoie le mail
        $success=true; //le mail est correctement rempli on indique un message de succes
		$message =  "Votre question $Nom a &eacute;t&eacute; post&eacute;e avec succ&egrave;s ! <br /> 
		Elle sera trait&eacute;e dans les meilleurs d&eacute;lais.<br /> 
		Nous vous remercions de votre visite !<br /> 
		<a href='index.php'>Revenir &agrave; l\'acceuil</a>";
		}else{ 
		$success = false; //pas de commentaire
		$message = "Votre commentaire est vide, merci de reformuler votre question";
		}
	}else{
	$verif=false; // email non valide
	$message= "Cette adresse Email n'est pas valide";
	}
?> 
<html> 
<head></head> 
<body> 
 <?php if($success) 
    echo "$message"; // écriture message de succès
else 
    echo "$message"; // ecriture message d'Echec
?> 
<h2>Contactez-Nous</h2>
<div class="bloc">Pour nous rejoindre veuillez répondre au formulaire ci-dessous :<br><br> 
<form method="post" action="envoi.php"> 
<table> 
   <tr> 
      <td><strong>Votre Nom/Prénom:</strong></td> 
      <td><input name=Nom type=text value="<?php echo $Nom;?>" size=30></td> 

.....................etc.................
</form> 
<br> 
</div> 
<div class="contenu_bas"></div> 
</body> 
</html>
Tu peux rajouter autant de condition que tu veux faire de vérifications....