mailscript werkt niet (Opgelost)
chth - 28/08/2010 19:01 (laatste wijziging 29/08/2010 09:41)
Lid
hallo,
ik ben zonet begonnen met php te leren uit een boek.
ik heb dus een formulier (formulier.html) waarin deze code staat
<html>
<head>
<title>Mailformulier</title>
</head>
<body>
<form action="mailform.php" method="post">
<input type="hidden" name="to" value="emailadres" />
<input type="hidden" name="subject" value="Mail van uw site" />
<input type="hidden" name="redirect" value="http://www.leer-php.nl/formulieren/thanks.htm" />
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden">
</form>
</body>
</html>
< html>
< head>
< title> Mailformulier</ title>
</ head>
< body>
< form action= "mailform.php" method= "post" >
< input type= "hidden" name= "to" value= "emailadres" />
< input type= "hidden" name= "subject" value= "Mail van uw site" />
< input type= "hidden" name= "redirect" value= "http://www.leer-php.nl/formulieren/thanks.htm" />
Naam: < input type= "text" name= "naam" />< br />
E
- mail : < input type
= "text" name
= "mailadres" />< br
/> Uw reactie: < textarea cols= "30" rows= "4" name= "reactie" ></ textarea>
< input type= "submit" value= "verzenden" >
</ form>
</ body>
</ html>
dan heb ik ook een mailscript (mailform.php) waarin deze code staat
<?php
ini_set("SMTP", "localhost");
ini_set("smtp_port", 80);
ini_set("sendmail_from", "emailadres");
$to = $_POST["to"];
$subject = $_POST["subject"];
$redirect = $_POST["redirect"];
if (!$to) {
echo "u heeft geen ontvanger opgegeven";
exit;
}
reset($_POST);
while($postvar = each($_POST)) {
$varnaam = $postvar['key'];
$varinhoud = $postvar['value'];
$boodschap .= $varnaam."=".$varinhoud."\n";
}
mail($to, $subject, $boodschap);
if (isset($redirect)) {
header("location: $redirect");
}
?>
<?php
ini_set ( "sendmail_from" , "emailadres" ) ; $to = $_POST [ "to" ] ;
$subject = $_POST [ "subject" ] ;
$redirect = $_POST [ "redirect" ] ;
if ( ! $to ) {
echo "u heeft geen ontvanger opgegeven" ; }
while ( $postvar = each ( $_POST ) ) { $varnaam = $postvar [ 'key' ] ;
$varinhoud = $postvar [ 'value' ] ;
$boodschap .= $varnaam . "=" . $varinhoud . "\n " ;
}
mail ( $to , $subject , $boodschap ) ; header ( "location: $redirect " ) ; }
?>
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
chth - 28/08/2010 19:07 (laatste wijziging 29/08/2010 09:42)
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?
#
ini_set("SMTP", "localhost");
#
ini_set("smtp_port", 80);
#
ini_set("sendmail_from", "emailadres");
#
#
#
ini_set ( "sendmail_from" , "emailadres" ) ;
PcFreak - 28/08/2010 20:18 (laatste wijziging 28/08/2010 20:21)
Nieuw lid
die hidden velden zijn niet nodig kan je simel zo doen:
$to = "jemail@....com";
$subject = "Onderwerp";
$redirect = "http://pagina....";
$to = "jemail@....com" ;
$subject = "Onderwerp" ;
$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:
$Verzender = "From: jemail@...";
mail($email_ontvanger, $onderwerp, $bericht, $Verzender);
$Verzender = "From: jemail@..." ;
mail ( $email_ontvanger , $onderwerp , $bericht , $Verzender ) ;
chth - 28/08/2010 20:38
Lid
van waar de variabele $email_ontvanger?
Martijn - 28/08/2010 20:43 (laatste wijziging 28/08/2010 20:44)
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
Koen - 28/08/2010 20:43
PHP expert
Gebruik de SMTP-server van je ISP (internet service provider), die kan je vast wel ergens op het internet terugvinden.
chth - 28/08/2010 20:58
Lid
@ martijn
bedoel je dus dat je een emailadres van een hidden veld kunt opsporen?
iedereen al bedankt voor reacties
PcFreak - 28/08/2010 21:46 (laatste wijziging 28/08/2010 21:49)
Nieuw lid
Jap dan kan hij er een ander email adres van maken in de plaats van het jouwe ;)
ikzelf zou het zo doen :
<?php
$Ontvanger = "jeemail@hotmail.com"; // E-mail adress
$onderwerp = "Contact"; // Onderwerp
$redirect = "http://www.jewebsite.com"; // je website
$Zender = "From $_POST['mailadres']";
$Naam = $_POST['naam'];
$Reactie = $_POST['reactie'];
if(isset($_POST['verzenden'])) {
if(empty($Naam)) {
echo "Je hebt geen naam ingevuld!";
} elseif(empty($Zender)) {
echo "Je hebt geen E-mail adres ingevuld";
} elseif(empty($Reactie)) {
echo "Je hebt geen reactie ingevuld!";
} elseif(ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$Zender)) {
echo "Je hebt geen geldig e-mail adres opgegeven";
} else {
mail($ontvanger, $onderwerp, $reactie, $Zender);
header(location: $redirect);
}
} else {
?>
<form action="mailform.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" name="verzenden" value="verzenden">
</form>
<?php
}
?>
<?php
$Ontvanger = "jeemail@hotmail.com" ; // E-mail adress
$onderwerp = "Contact" ; // Onderwerp
$redirect = "http://www.jewebsite.com" ; // je website
$Zender = "From $_POST ['mailadres']" ;
$Naam = $_POST [ 'naam' ] ;
$Reactie = $_POST [ 'reactie' ] ;
if ( isset ( $_POST [ 'verzenden' ] ) ) { echo "Je hebt geen naam ingevuld!" ; } elseif ( empty ( $Zender ) ) { echo "Je hebt geen E-mail adres ingevuld" ; } elseif ( empty ( $Reactie ) ) { echo "Je hebt geen reactie ingevuld!" ; } elseif ( ereg ( "[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+" , $Zender ) ) { echo "Je hebt geen geldig e-mail adres opgegeven" ; } else {
mail ( $ontvanger , $onderwerp , $reactie , $Zender ) ; }
} else {
?>
<form action="mailform.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" name="verzenden" value="verzenden">
</form>
<?php
}
?>
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.
chth - 28/08/2010 21:53
Lid
ontbreekt er nog iets na de laatste else { ?
PcFreak - 28/08/2010 22:13
Nieuw lid
<?php
$Ontvanger = "jeemail@hotmail.com"; // E-mail adress
$onderwerp = "Contact"; // Onderwerp
$Zender = "from: ".$_POST['mailadres']."";
$Naam = $_POST['naam'];
$Reactie = $_POST['reactie'];
if(isset($_POST['verzenden'])) {
if(empty($Naam)) {
echo "Je hebt geen naam ingevuld!";
} elseif(empty($Zender)) {
echo "Je hebt geen E-mail adres ingevuld";
} elseif(empty($Reactie)) {
echo "Je hebt geen reactie ingevuld!";
} elseif(ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$Zender)) {
echo "Je hebt geen geldig e-mail adres opgegeven";
} else {
mail($ontvanger, $onderwerp, $reactie, $Zender);
echo "Je mail is succesvol verzonden";
}
} else {
?>
<form action="mailform.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" name="verzenden" value="verzenden">
</form>
<?php
}
?>
<?php
$Ontvanger = "jeemail@hotmail.com" ; // E-mail adress
$onderwerp = "Contact" ; // Onderwerp
$Zender = "from: " . $_POST [ 'mailadres' ] . "" ;
$Naam = $_POST [ 'naam' ] ;
$Reactie = $_POST [ 'reactie' ] ;
if ( isset ( $_POST [ 'verzenden' ] ) ) { echo "Je hebt geen naam ingevuld!" ; } elseif ( empty ( $Zender ) ) { echo "Je hebt geen E-mail adres ingevuld" ; } elseif ( empty ( $Reactie ) ) { echo "Je hebt geen reactie ingevuld!" ; } elseif ( ereg ( "[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+" , $Zender ) ) { echo "Je hebt geen geldig e-mail adres opgegeven" ; } else {
mail ( $ontvanger , $onderwerp , $reactie , $Zender ) ; echo "Je mail is succesvol verzonden" ; }
} else {
?>
<form action="mailform.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" name="verzenden" value="verzenden">
</form>
<?php
}
?>
Bedankt door: chth
chth - 29/08/2010 10:05
Lid
ik heb nu dit in mijn formulier.html staan
<html>
<head>
<title>Mailformulier</title>
</head>
<body>
<form action="mailform.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden">
</form>
</body>
</html>
< html>
< head>
< title> Mailformulier</ title>
</ head>
< body>
< form action= "mailform.php" method= "post" >
Naam: < input type= "text" name= "naam" />< br />
E
- mail : < input type
= "text" name
= "mailadres" />< br
/> Uw reactie: < textarea cols= "30" rows= "4" name= "reactie" ></ textarea>
< input type= "submit" value= "verzenden" >
</ form>
</ body>
</ html>
en dit in mailform.php staan
<?php
$to = "chth13@gmail.com";
$subject = "mail van uw site";
$redirect = "http://www.leer-php.nl/formulieren/thanks.htm";
$from = "from: ".$_POST['mailadres']."";
if (!$to) {
echo "u heeft geen ontvanger opgegeven";
exit;
}
reset($_POST);
while($postvar = each($_POST)) {
$varnaam = $postvar['key'];
$varinhoud = $postvar['value'];
$boodschap .= $varnaam." = ".$varinhoud."\n";
}
mail($to, $subject, $boodschap, $from);
if (isset($redirect)) {
header("location: $redirect");
}
?>
<?php
$to = "chth13@gmail.com" ;
$subject = "mail van uw site" ;
$redirect = "http://www.leer-php.nl/formulieren/thanks.htm" ;
$from = "from: " . $_POST [ 'mailadres' ] . "" ;
if ( ! $to ) {
echo "u heeft geen ontvanger opgegeven" ; }
while ( $postvar = each ( $_POST ) ) { $varnaam = $postvar [ 'key' ] ;
$varinhoud = $postvar [ 'value' ] ;
$boodschap .= $varnaam . " = " . $varinhoud . "\n " ;
}
mail ( $to , $subject , $boodschap , $from ) ; header ( "location: $redirect " ) ; }
?>
en het werkt zoals het zou moeten.
bedankt voor alle hulp!
Gesponsorde links
Dit onderwerp is gesloten .