envoi mail problème

envoi mail problème - PHP - Programmation

Marsh Posté le 16-04-2008 à 13:01:29    

helloo à tous voilà j'ai voulu faire un formulaire et j'ai un soucci pour envoyer le mail.
voilà le code
 

Code :
  1. <form action="mailto:monmail@gmail.com" method="post"
  2. enctype="text/plain" name="mail">  <br>
  3. <br>pseudo<br>
  4. <input name="votre pseudo"><br>
  5.   <br>password</br>
  6. <input type="password" name="votrepassword" size="40" maxlength="256">
  7. <input type="submit" value="envoyer">
  8. </form>


 
comme vous le voyez l'adresse où je veux que le formulaire soit envoyé est une gmail. le problème c'est que auand je clique sur envoyer celui-ci me lance outlook en me demandant si je veux oui ou non accepter l'envoi des données...L. en cliquant sur oui accepter c'est niquel ça l'envoi bien et tout et ça arrive direct dans boite de réception même pas dans les spam. mais ce que j'aimerais faire c'est comme sur d'autre site où dès qu'on appuie sur le bouton envoyé ben que c'est envoyer qu'il ne faut pas apsser par la messagerie par défaut.
 
pour info je suis sur ifrance....peut-être que ça pourra aider :D
merci


---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 13:01:29   

Reply

Marsh Posté le 16-04-2008 à 13:05:37    

C'est un simple formulaire html ca, si tu veut envoyer un email sans passer par le logiciel de messagerie, il faut créer ou utiliser un script php utilisant la fonction mail()

Reply

Marsh Posté le 16-04-2008 à 13:10:21    

en fait avant j'avais un script en php de deux page un avec le formulaire l'autre qui servait quand on cliquait sur envoyer... mais ça foirait aussi....
 
en fait j'esseye de trouver un truc simple parce que je doit dire je connais psa mal sur le html mais pas tellemetn sur le php.... et la fonction mail je vais me renseigner car je comprend pas trop :(


---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 13:17:50    

je viens de trouver ça aussi mais je ne sais pas si ça fonction,nera avec un gmail;;
 
alors le formulaire
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <TITLE>E-Mail Form</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <FORM method="POST" action="do_sendform.php">
  7. <P>Your Name:<br>
  8. <INPUT type="text" name="sender_name" size=30>
  9. </p>
  10. <P>Your E-Mail Address:<br>
  11. <INPUT type="text" name="sender_email" size=30>
  12. </p>
  13. <P>Message:<br>
  14. <textarea name="message" cols=30 rows=5></textarea>
  15. </p><INPUT type="submit" value="Send This Form">
  16. </FORM>
  17. </BODY>
  18. </HTML>


 
le script quand on clique sur send thsi form

Code :
  1. <?php
  2. $msg = "Sender Name:\t$sender_name\n";
  3. $msg .= "Sender E-Mail:\t$sender_email\n";
  4. $msg .= "Message:\t$message\n\n";
  5. $recipient = "you@youremail.com";
  6. $subject = "Web Site Feedback";
  7. $mailheaders = "From: My Web Site <> \n";
  8. $mailheaders .= "Reply-To: $sender_email\n\n";
  9. mail($recipient, $subject, $msg, $mailheaders);
  10. echo "<HTML><HEAD>";
  11. echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
  12. echo "<H1 align=center>Thank You, $sender_name</H1>";
  13. echo "<P align=center>";
  14. echo "Your feedback has been sent.</P>";
  15. echo "</BODY></HTML>";
  16. ?>


 
le prob c'est que ça marche bine il met après message envoyer mais pas dans ma boite mail ni dans les spam....


Message édité par deviltuner le 16-04-2008 à 13:28:17

---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 13:35:33    

ca a l'air plutot pas mal... comme tu voi c'est la fonction mail de php qui est utilisée... C'est le fonctionnement décrit plus haut par nazztazz.
 
Par contre c'est quoi le problème avec gmail ? je comprend pas. Cette fonction envoie des mails, peu importe le serveur qui les reçois !
 
et aussi il faudra ajouter des lignes en haut de ton script, du genre:
 
$sender_name = $_POST['sender_name'];
 
idem pour $sender_email et $message... Ca permet de recuperer le contenu des champs de ton formulaire html(envoyé ac la methode 'post') dans des variables php.
 
NAZZTAZZ à dit: "Attention cependant, a ce que les visiteurs puissent pas rajouter d'en-tetes au mail, sinon ton formulaire va vite servir de relais spam."

Reply

Marsh Posté le 16-04-2008 à 13:46:22    

oui oui pr le truc du spam mais une chose à la fois lool
 
alors si je comrpends bien suffit de rajouter = $_POST['sender_name'];  pour name et ausi pour les autre (email et message) et ça devrait passer?
 
parce que ici j'ai tester et je reçoit absolument rien même pas un message vide.  
 


---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 14:01:06    

tu travail en local ou sur un serveur distant ? Recopie ton nouveau code pour voir...

Reply

Marsh Posté le 16-04-2008 à 14:10:55    

je suis sur ifrance ;) je vais tester


---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 14:19:54    

ai lieu de message c'est devenu password c'est plus simple ;)
 

Code :
  1. <?php
  2. $msg = "Sender Name:\t$sender_name = $_POST['sender_name'];
  3. $msg .= "Sender E-Mail:\t$sender_email = $_POST['sender_mail']; 
  4. $msg .= "Message:\t$sender_password = $_POST['sender_password'];
  5. $recipient = "mon mail@gmail;com";
  6. $subject = "Web Site Feedback";
  7. $mailheaders = "From: My Web Site <> \n";
  8. $mailheaders .= "Reply-To: $sender_email\n\n";
  9. mail($recipient, $subject, $msg, $mailheaders);
  10. echo "<HTML><HEAD>";
  11. echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
  12. echo "<H1 align=center>Thank You, $sender_name</H1>";
  13. echo "<P align=center>";
  14. echo "Your feedback has been sent.</P>";
  15. echo "</BODY></HTML>";
  16. ?>


arf erreur ligne 3
 
pourquoi il me met les "[" en un autre couleur mon editeur j'ai mis pourtant le même.... et sender email aussi??? et le "." avant le = du premier $msg c'est noraml qu'il est manquant?


Message édité par deviltuner le 16-04-2008 à 14:23:02

---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 14:28:58    

Salut,
 
Puisque que visiblement tu ne connais pas le php, j'ai corrigé ton code.
 

Code :
  1. <?php
  2. $msg = "Sender Name:\t" . $_POST['sender_name'];
  3. $msg .= "Sender E-Mail:\t" . $_POST['sender_mail'];
  4. $msg .= "Message:\t" . $_POST['sender_password'];
  5. $recipient = "mon mail@gmail.com";
  6. $subject = "Web Site Feedback";
  7. $mailheaders = "From: My Web Site <> \n";
  8. mail($recipient, $subject, $msg, $mailheaders);
  9. echo "<HTML><HEAD>";
  10. echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
  11. echo "<H1 align=center>Thank You, " . $_POST['sender_name'] . "</H1>";
  12. echo "<P align=center>";
  13. echo "Your feedback has been sent.</P>";
  14. echo "</BODY></HTML>";
  15. ?>


 
Si cela t'intéresse, procure toi un livre ou un tutoriel pour du php. Tu pourras rapidement trouver tes erreurs et les corriger par toi même. Sinon, je te déconseille de copier coller du code depuis le web sans le comprendre, ceux ci peuvent contenir des failles qui risquent de t'apporter beaucoup d'ennuis
 
EDIT j'ai supprimé la ligne 12 car elle contenait une faille pouvant transformer ton formulaire en relais spam.
 
RE EDIT Corection de la petite erreur de syntaxe


Message édité par Melendril le 16-04-2008 à 15:15:09
Reply

Marsh Posté le 16-04-2008 à 14:28:58   

Reply

Marsh Posté le 16-04-2008 à 14:51:00    

ok merci beacoup ben, en fait je vais te dire que je suis en train de m'instruire sur le net via php lool je me dit que c'est bien si je connais plus que le bête html basic ^^
 
 
mince j'ai un blem à la ligne 5 maintenant....snif
 

Citation :

Parse error: syntax error, unexpected '=' in /www/sites/1/ifrance.com/d/e/????/site/envoyer.php on line 5


Message édité par deviltuner le 16-04-2008 à 14:51:44

---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 15:12:31    

Oups erreur de ma part. Remplace le '=' par un '.'

Reply

Marsh Posté le 16-04-2008 à 17:45:31    

je suis désolé mais la maintenant il me dit qu'il y a une erreur à la ligne 2.... décidement.... c'est pas parce que dans un cas on parle de email et de l'autre mail???
 
dans le code un on a mis email. puis quand tu as ajouter les $_post c'est devenu mail. alors moi j'ai remplacer dans le premier code le sender_email par sender_mail vu que je pense qu'ainsi c'est correct mais non.... erreur ligne2...snif :'(
 
mon premier code html étant

Code :
  1. <HTML>
  2. <HEAD>
  3. <TITLE>E-Mail Form</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <FORM method="POST" action="envoyer.php">
  7. <P>pseudo:<br>
  8. <INPUT type="text" name="sender_name" size=30>
  9. </p>
  10. <P>email:<br>
  11. <INPUT type="text" name="sender_mail" size=30>
  12. </p>
  13. <P>password<br>
  14. <INPUT type="password" name="sender_password" size=30>
  15. </p><INPUT type="submit" value="envoyer">
  16. </FORM>
  17. </BODY>
  18. </HTML>


Message édité par deviltuner le 16-04-2008 à 17:47:23

---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 18:40:03    

Salut,
 
J'ai refait le test en copiant le code PHP que j'ai corrigé et le code html que tu viens de montrer, c'est OK.
 
Vérifie que tu bien les bonnes versions, si cela ne marche toujours pas, poste le code des 2 pages.

Reply

Marsh Posté le 16-04-2008 à 19:33:28    

bon faut pas chercher à comprendre maintenant j'ai bien le mesage "thank you your...." ça ça va mais le problème c'est que je ne reçois rien..... snif :'( quand c'est pas un truc c'est un autre.... pour info j'utilise une adresse gmail sur ifrance je sais pas si ça passe?
 
 
EDIT: j'ai essaier avec l'adresse mail que fourni ifrance (...@ifrance.com) ben ça fontcionne pas non plus.... il faut jsute que je change mon mail@gmail.com dans le script quand même?


Message édité par deviltuner le 16-04-2008 à 19:39:42

---------------
HERE IS THE HELL
Reply

Marsh Posté le 16-04-2008 à 21:24:21    

as tu_ verifié dans les msg indesirable?
certains fournisseurs bloquent les mail si le sujet est 'test' etc...

Reply

Marsh Posté le 16-04-2008 à 21:41:20    

oui oui tout partout dans les spam dans les indésirables dans la bt de réception partout et rien du tout pour les deux adresses la gmail et l'ifrance....
 
mes fichiers je les ai appeller "formulaire"(htm) et "envoyer"(php)


Message édité par deviltuner le 16-04-2008 à 21:43:05

---------------
HERE IS THE HELL
Reply

Marsh Posté le 17-04-2008 à 09:18:46    

La fonction mail a besoin de savoir quel serveur smtp elle va utiliser. et cela se configure... dans php.ini auquel tu n'as pas accès.
 
essaye d'ajouter:
 
error_reporting(E_ALL);
 
et ce au début de ton fichier php, puis re test le tout, peut être affichera t'il une erreur maintenant...

Reply

Marsh Posté le 17-04-2008 à 23:27:49    

hello ben j'ai mis la fonction error_reporting(E_ALL); juste après le <?php et ça fonctionne toujours pas ni pour l'adresse mail ifrance ni pour celle de gmail.


---------------
HERE IS THE HELL
Reply

Marsh Posté le 18-04-2008 à 13:10:50    

deviltuner a écrit :

hello ben j'ai mis la fonction error_reporting(E_ALL); juste après le <?php et ça fonctionne toujours pas ni pour l'adresse mail ifrance ni pour celle de gmail.


 
et ça n'affiche pas d'erreur ?
 
tiens essaye ça et dit moi ce qui s'affiche....
 
code php:
 

Code :
  1. <?php
  2. error_reporting(E_ALL);
  3. if ( isset( $_POST['pseudo'] ) )
  4. {
  5. $pseudo = $_POST['pseudo'];
  6. }else{
  7. die ('pas de pseudo');
  8. }
  9. if ( isset( $_POST['sender_mail'] ) )
  10. {
  11. $expediteur = $_POST['sender_mail'];
  12. }else{
  13. die ('pas de mail');
  14. }
  15. if ( isset( $_POST['contenu'] ) )
  16. {
  17. $contenu = $_POST['contenu'];
  18. }else{
  19. die ('pas de contenu');
  20. }
  21. $destinataire = 'inscrit ton adresse mail ici'; //pas de /n a la fin de la ligne
  22. $sujet = 'Web Site Feedback: test';
  23. $mailheaders = 'From: My Web Site\n';
  24. $msg = 'Sender Name:\t'.$pseudo;
  25. $msg .= 'Sender E-Mail:\t'.$destinataire;
  26. $msg .= 'Message:\t'.$contenu;
  27. if ( mail($destinataire, $sujet, $msg, $mailheaders) )
  28. {
  29. ?><HTML>
  30. <HEAD>
  31. <TITLE>Form Sent!</TITLE>
  32. </HEAD>
  33. <BODY>
  34. <H1 align=center>Thank You, <?php echo $pseudo ?></H1>
  35. <P align=center>
  36. Your feedback has been sent.</P>
  37. </BODY>
  38. </HTML><?php
  39. } else {
  40. ?><HTML>
  41. <HEAD>
  42. <TITLE>Form not Sent !!</TITLE>
  43. </HEAD>
  44. <BODY>
  45. <H1 align=center>Sorry, <?php echo $pseudo ?></H1>
  46. <P align=center>
  47. Your feedback has <strong>NOT</strong> been sent.</P>
  48. </BODY>
  49. </HTML><?php
  50. }
  51. ?>


 
code html:
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <TITLE>E-Mail Form</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <FORM method="POST" action="ici tu met le nom de ta page php">
  7. <P>pseudo:<br>
  8. <INPUT type="text" name="pseudo" size=30>
  9. </p>
  10. <P>email:<br>
  11. <INPUT type="text" name="sender_mail" size=30>
  12. </p>
  13. <P>contenu<br>
  14. <INPUT type="text" name="contenu" size=30>
  15. </p><INPUT type="submit" value="envoyer">
  16. </FORM>
  17. </BODY>
  18. </HTML>


 
edit:
voici ce que dit mon bouquin (php 5 avancé, chez Eyrolles)
 

Citation :


    Suite à des abus [...], sur certains hébergements mutualisé, la fonction mail() est soit remplacée, soit recodée, soit tout simplement enlevée. En cas de soucis, regardez la documentation ou la FAQ de votre hébergeur.


 
je me dit que c'est ptete ce qu'il t'arrive ...


Message édité par wrksx le 18-04-2008 à 13:18:44
Reply

Marsh Posté le 18-04-2008 à 16:53:44    

hello bonj'ai aps su le etser sur ifrance parce que le ftp marche plus pour le moemnt on dirait qu'ils sont en maintenance enfin soit je l'ai tester sur un ancien site et voilà ce qu'il marque  
500 phpwrapper internal error : ERR_MISSING_CGI_PRIVILEGE (45)
 
mais étatn donner que je ne l'ai aps tester sur ifrance... faut peut-être attendre que je reposte par après avoir tester sur ifrance.


---------------
HERE IS THE HELL
Reply

Marsh Posté le 18-04-2008 à 17:00:37    

ceci doit signifier que ton hébergeur n'autorise pas mail() amha.

Reply

Marsh Posté le 20-04-2008 à 21:12:51    

amha??
 
chouette :( et je fais quoi alors???


---------------
HERE IS THE HELL
Reply

Marsh Posté le 20-04-2008 à 22:02:48    

Et bien tu fais une recherche sur google du style : php socket mail.
Il y a quelques magnifiques fonctions toutes faites.
 
En plus tu verras comment l'e-mail est envoyé techniquement, c'est très instructif. :)


Message édité par CyberDenix le 20-04-2008 à 22:04:21

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 20-04-2008 à 22:40:13    

euh oui mais encore.... je comrpends rien à tous ça moi... lool


---------------
HERE IS THE HELL
Reply

Marsh Posté le 21-04-2008 à 12:20:59    

...  :heink:  
 
ben la fonction que tu utilisais, 'mail()', utilise elle même les sockets réseaux, mais comme elle est bloquée par ton hébergeur tu doi créer une autre fonction comme 'ma_fonction_mail()' qui se chargera de poster ton mail.
 
ce que te conseillais cyberdenix c'est chercher sur un site de sources si tu peu trouver une fonction toute faite qui fasse l'affaire (si tu cherche, tu trouvera a coup sûr...).
 
PS: un socket c'est une sorte de canal de communication ouvert entre 2 machines, et pour envoyer un mail tu va devoir te connecter a un serveur (smtp en l'occurrence) ce qui implique l'ouverture d'un socket entre toi et le serveur. Ensuite tu peu envoyer des données par le socket, et le serveur peu repondre également. Si tu comprend rien, tu devrai lire un peu sur TCP/IP, les sockets, et autres petites chose des réseaux informatiques.

Reply

Marsh Posté le 21-04-2008 à 12:56:39    

cyberdenix  ?? c'est aps un site ça??
 
et crer ça propre fonction mouè facile à dire ça lool:D


---------------
HERE IS THE HELL
Reply

Marsh Posté le 21-04-2008 à 13:18:39    

cyberdenix est le pseudo d'une personne qui voulait t'aider. et il t'as dit:
 

Citation :

 Et bien tu fais une recherche sur google du style : php socket mail.
Il y a quelques magnifiques fonctions toutes faites.


 
tu devrai mettre un peu du tien et voir comment fonctionne php si tu veu t'en servir. Créer une fonction est quelque chose d'enfantin, sutout en php.
 
voici comment tu peu proceder pour créer ta propre fonction:
 


function is_deviltuner ($pseudo)
    {
 
     if ($pseudo === 'deviltuner')
          {
          return true;
          } else {
          return false;
          }
    }


 
voila ensuite tu pourra utiliser ta fonction dans ton code comme n'importe quelle autre fonction...
 


 
$test = is_deviltuner ($pseudo);
 
 


 
mais tu aurai pu trouver tout seul, c'est très documenté comme sujet et il doi y avoir de nombreux post sur hfr a ce propos.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed