login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mailscript werkt niet (Opgelost)

Offline chth - 28/08/2010 19:01 (laatste wijziging 29/08/2010 09:41)
Avatar van chthLid hallo,

ik ben zonet begonnen met php te leren uit een boek.
ik heb dus een formulier (formulier.html) waarin deze code staat
  1. <html>
  2. <head>
  3. <title>Mailformulier</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="mailform.php" method="post">
  8. <input type="hidden" name="to" value="emailadres" />
  9. <input type="hidden" name="subject" value="Mail van uw site" />
  10. <input type="hidden" name="redirect" value="http://www.leer-php.nl/formulieren/thanks.htm" />
  11. Naam: <input type="text" name="naam" /><br />
  12. E-mail: <input type="text" name="mailadres" /><br />
  13. Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
  14. <input type="submit" value="verzenden">
  15. </form>
  16. </body>
  17. </html>


dan heb ik ook een mailscript (mailform.php) waarin deze code staat

  1. <?php
  2. ini_set("SMTP", "localhost");
  3. ini_set("smtp_port", 80);
  4. ini_set("sendmail_from", "emailadres");
  5. $to = $_POST["to"];
  6. $subject = $_POST["subject"];
  7. $redirect = $_POST["redirect"];
  8. if (!$to) {
  9. echo "u heeft geen ontvanger opgegeven";
  10. }
  11. reset($_POST);
  12. while($postvar = each($_POST)) {
  13. $varnaam = $postvar['key'];
  14. $varinhoud = $postvar['value'];
  15. $boodschap .= $varnaam."=".$varinhoud."\n";
  16. }
  17. mail($to, $subject, $boodschap);
  18. if (isset($redirect)) {
  19. header("location: $redirect");
  20. }
  21. ?>


voor dit te testen heb ik xampp geïnstaleert en gebruik ik apache om dan via "localhost" in mijn browser dit te testen maar als ik het formulier invul en op verzenden klik ontvang ik geen mail.

weet iemand wat er fout is? en kan iemand mij ook zeggen wat ik juist allemaal moet invullen bij "ini_set(...)" want dat weet ik niet zo zeker?

10 antwoorden

Gesponsorde links
Offline chth - 28/08/2010 19:07 (laatste wijziging 29/08/2010 09:42)
Avatar van chth Lid ok, maar om dit te testen moet ik ofwel in het bestand php.ini kunnen om da smtp-instellingen te wijzigen ofwel moet ik dit doen door ini_set te gebruiken zoals hieronder.
maar hoe weet ik dan wat ik allemaal bij die 3 keer ini_set moet invullen?

  1. #
  2. ini_set("SMTP", "localhost");
  3. #
  4. ini_set("smtp_port", 80);
  5. #
  6. ini_set("sendmail_from", "emailadres");
Offline PcFreak - 28/08/2010 20:18 (laatste wijziging 28/08/2010 20:21)
Avatar van PcFreak Nieuw lid die hidden velden zijn niet nodig kan je simel zo doen:

  1. $to = "jemail@....com";
  2. $subject = "Onderwerp";
  3. $redirect = "http://pagina....";


en ik denk dat je het beter gewoon eens online test en die ini_set wegdoet ;)
en bij je mail functie ben je From vergeten dus zo:
  1. $Verzender = "From: jemail@...";
  2. mail($email_ontvanger, $onderwerp, $bericht, $Verzender);
Offline chth - 28/08/2010 20:38
Avatar van chth Lid van waar de variabele $email_ontvanger?
Offline Martijn - 28/08/2010 20:43 (laatste wijziging 28/08/2010 20:44)
Avatar van Martijn Crew PHP omdat alles wat je in je formulier op hidden zet nmogsteeds aan te passen is. En als ik daar dus een bot voor maak, die je code neemt, en dat emailadres vervang door waar ik het heen wilt sturen, dan heb ik vrij simpel een spambot gemaakt, op jouw naam.

edit: Verder zijn de ini_set()'s niet nodig, iig niet online, en met WAMP is t een gekut als je het daarmee doet
Offline Koen - 28/08/2010 20:43
Avatar van Koen PHP expert Gebruik de SMTP-server van je ISP (internet service provider), die kan je vast wel ergens op het internet terugvinden.
Offline chth - 28/08/2010 20:58
Avatar van chth Lid @ martijn

bedoel je dus dat je een emailadres van een hidden veld kunt opsporen?

iedereen al bedankt voor reacties
Offline PcFreak - 28/08/2010 21:46 (laatste wijziging 28/08/2010 21:49)
Avatar van PcFreak Nieuw lid Jap dan kan hij er een ander email adres van maken in de plaats van het jouwe ;)

ikzelf zou het zo doen :

  1. <?php
  2.  
  3. $Ontvanger = "jeemail@hotmail.com"; // E-mail adress
  4. $onderwerp = "Contact"; // Onderwerp
  5. $redirect = "http://www.jewebsite.com"; // je website
  6.  
  7. $Zender = "From $_POST['mailadres']";
  8. $Naam = $_POST['naam'];
  9. $Reactie = $_POST['reactie'];
  10.  
  11. if(isset($_POST['verzenden'])) {
  12. if(empty($Naam)) {
  13. echo "Je hebt geen naam ingevuld!";
  14. } elseif(empty($Zender)) {
  15. echo "Je hebt geen E-mail adres ingevuld";
  16. } elseif(empty($Reactie)) {
  17. echo "Je hebt geen reactie ingevuld!";
  18. } elseif(ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$Zender)) {
  19. echo "Je hebt geen geldig e-mail adres opgegeven";
  20. } else {
  21. mail($ontvanger, $onderwerp, $reactie, $Zender);
  22. header(location: $redirect);
  23. }
  24. } else {
  25. ?>
  26.  
  27. <form action="mailform.php" method="post">
  28. Naam: <input type="text" name="naam" /><br />
  29. E-mail: <input type="text" name="mailadres" /><br />
  30. Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
  31. <input type="submit" name="verzenden" value="verzenden">
  32. </form>
  33. <?php
  34. }
  35. ?>


weet niet of het werkt niet getest en als je het niet goed vind kan je altijd eens bij de tutorials van sitemasters kijken bij php daar staat ook een handige tussen inplaats van je boek.
Offline chth - 28/08/2010 21:53
Avatar van chth Lid ontbreekt er nog iets na de laatste else { ?
Offline PcFreak - 28/08/2010 22:13
Avatar van PcFreak Nieuw lid
  1. <?php
  2.  
  3. $Ontvanger = "jeemail@hotmail.com"; // E-mail adress
  4. $onderwerp = "Contact"; // Onderwerp
  5.  
  6. $Zender = "from: ".$_POST['mailadres']."";
  7. $Naam = $_POST['naam'];
  8. $Reactie = $_POST['reactie'];
  9.  
  10. if(isset($_POST['verzenden'])) {
  11. if(empty($Naam)) {
  12. echo "Je hebt geen naam ingevuld!";
  13. } elseif(empty($Zender)) {
  14. echo "Je hebt geen E-mail adres ingevuld";
  15. } elseif(empty($Reactie)) {
  16. echo "Je hebt geen reactie ingevuld!";
  17. } elseif(ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$Zender)) {
  18. echo "Je hebt geen geldig e-mail adres opgegeven";
  19. } else {
  20. mail($ontvanger, $onderwerp, $reactie, $Zender);
  21. echo "Je mail is succesvol verzonden";
  22. }
  23. } else {
  24. ?>
  25.  
  26. <form action="mailform.php" method="post">
  27. Naam: <input type="text" name="naam" /><br />
  28. E-mail: <input type="text" name="mailadres" /><br />
  29. Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
  30. <input type="submit" name="verzenden" value="verzenden">
  31. </form>
  32. <?php
  33. }
  34. ?>
Bedankt door: chth
Offline chth - 29/08/2010 10:05
Avatar van chth Lid ik heb nu dit in mijn formulier.html staan
  1. <html>
  2. <head>
  3. <title>Mailformulier</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="mailform.php" method="post">
  8. Naam: <input type="text" name="naam" /><br />
  9. E-mail: <input type="text" name="mailadres" /><br />
  10. Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
  11. <input type="submit" value="verzenden">
  12. </form>
  13. </body>
  14. </html>


en dit in mailform.php staan
  1. <?php
  2. $to = "chth13@gmail.com";
  3. $subject = "mail van uw site";
  4. $redirect = "http://www.leer-php.nl/formulieren/thanks.htm";
  5. $from = "from: ".$_POST['mailadres']."";
  6. if (!$to) {
  7. echo "u heeft geen ontvanger opgegeven";
  8. }
  9. reset($_POST);
  10. while($postvar = each($_POST)) {
  11. $varnaam = $postvar['key'];
  12. $varinhoud = $postvar['value'];
  13. $boodschap .= $varnaam." = ".$varinhoud."\n";
  14. }
  15. mail($to, $subject, $boodschap, $from);
  16. if (isset($redirect)) {
  17. header("location: $redirect");
  18. }
  19. ?>


en het werkt zoals het zou moeten.

bedankt voor alle hulp! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.272s