Mail bericht werkt niet
Ik heb dit scriptje uit een boek van Arjan Burger "Leer jezelf professioneel PHP geplukt"
Nu heb ik alle vereiste documenten gemaakt,
formulier.html, mailform.php en dank.html (deze laatste als redirect).
Maar als ik dit in de browser test, krijg ik een foutmelding en komt m'n bericht helemaal niet terecht.
Ben ik iets vergeten? Er staan nogtans geen typfouten in.
formulier.html
<html>
<head>
<title>standaardmailformulier</title>
</head>
<body>
<form action="mailform.php" method="post">
<input type="hidden" name="to" value="[email protected]">
<input type="hidden" name="subject" value="Mail van uw website">
<input type="hidden" name="redirect" value="dank.html">
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="verzendbutton" value="Verzend formulier">
</form>
</body>
</html>
mailform.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if(!$to){ //Bevat to geen waarde?
echo "U hebt geen ontvanger opgegeven!";
exit;
}
reset($_POST); //Zet de arraypointer op 0, begin bij het begin
while ( $postvar = each($_POST)){
$varnaam = $postvar['key'];
$varinhoud = $postvar['value'];
$boodschap .= $varnaam."=".$varinhoud."\n";
//Boodschap bevat de variabelenaam plus inhoud
}
mail($to, $subject, $boodschap); //stuur de mail (aan, onderwerp, mail)
if (isset($redirect)){ //bevat redirect een waarde?
header("location: $redirect");
}
?>
if(!$to){ //Bevat to geen waarde?
echo "U hebt geen ontvanger opgegeven!";
exit;
}
reset($_POST); //Zet de arraypointer op 0, begin bij het begin
while ( $postvar = each($_POST)){
$varnaam = $postvar['key'];
$varinhoud = $postvar['value'];
$boodschap .= $varnaam."=".$varinhoud."\n";
//Boodschap bevat de variabelenaam plus inhoud
}
mail($to, $subject, $boodschap); //stuur de mail (aan, onderwerp, mail)
if (isset($redirect)){ //bevat redirect een waarde?
header("location: $redirect");
}
?>
dank.html
<html>
<head>
<title>Dank u voor u mail</title>
</head>
<body>
<h1>Dank u</h1><br>
<h3>Uw mail werd verstuurd</h3>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Stef
http://phpmailer.codeworxtech.com/
http://www.swiftmailer.org/
Kijk hier eens naar,
Dit werkt veel beter, en dan heb je ook meteen de juiste headers.
http://www.swiftmailer.org/
Kijk hier eens naar,
Dit werkt veel beter, en dan heb je ook meteen de juiste headers.
Ik zou graag geweten hebben waar de fout zat in het script?
Stef schreef op 21.06.2008 18:19:
Maar als ik dit in de browser test, krijg ik een foutmelding en komt m'n bericht helemaal niet terecht.
Leuk. Maar hier hebben wij dus niks aan, hoe moeten wij weten welke foutmelding je krijgt?
Als we dat wel weten, dan kunnen we zeggen hoe die weggewerkt kan worden. Maar ik raad wel phpmailer of swiftmailer aan, omdat die speciaal voor het mailen met php zijn geschreven, met php mailen is af en toe vrij ingewikkeld.
U zegt 'Maar als ik dit in de browser test, krijg ik een foutmelding'. Als u deze foutmelding hier post kunnen wij u misschien verder helpen.
Notice: Undefined variable: to in C:\Users\Eigenaar\Desktop\UsbWebserver\UsbWebserver\Root\mailform.php on line 2
U hebt geen ontvanger opgegeven!
Zou het misschien kunnen omdat ik dit test met een lokale server,
dat hij de mail niet echt verstuurt?
Alvast bedankt allen
heb geschreven.
Stef schreef op 21.06.2008 19:46:
Notice: Undefined variable: to in C:\Users\Eigenaar\Desktop\UsbWebserver\UsbWebserver\Root\mailform.php on line 2
U hebt geen ontvanger opgegeven!
U hebt geen ontvanger opgegeven!
Dat lijkt me ook wel erg duidelijk he....
Maar ik zal wel effe kijken of ik dat script herschrijf.
Gebruik ook edit, als je nog wat wilt toevoegen, niet een nieuw bericht.
( tenzij je zelf een mailserver hebt geinstaleerd .... )
ruud schreef op 21.06.2008 19:54:
Lokaal testen van de php mail functie werkt inderdaad niet .
Dat is dus onzin he, daar kan je niet vanuitgaan. Xampp heeft bijvoorbeeld al een mailserver on board. Maar als je effe naar die php kijkt, had je ook begrepen dat je niet had hoeven reageren want die is zo prehistorisch als wat.
<html>
<head>
<title>standaardmailformulier</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" name="verzendbutton" value="Verzend formulier">
</form>
</body>
</html>
mailform.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierVelden = array('naam', 'mailadres', 'reactie');
// Alle formuliervelden doorlopen
foreach($aFormulierVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($sValue))
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
echo '<html>
<head>
<title>Dank u voor u mail</title>
</head>
<body>
<h1>Dank u</h1><br>
<h3>Uw mail werd verstuurd</h3>';
echo '<p>Je hebt het formulier succesvol ingevuld! De volgende gegevens zijn bekend:</p>';
echo '<p>Naam: '.$aData['voornaam'].'<br />';
echo 'E-mail: '.$aData['mailadres'].'<br />';
echo 'Uw reactie: '.$aData['reactie'].'</p>';
$reactie = 'Naam: '.$aData['voornaam'].PHP_EOL;
.='E-mail: '.$aData['mailadres'].PHP_EOL;
.='Reactie: '.$aData['reactie'];
mail("[email protected]", "Mail van uw website", $reactie); //stuur de mail (aan, onderwerp, mail)
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier.html');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: formulier.php');
}
?>
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierVelden = array('naam', 'mailadres', 'reactie');
// Alle formuliervelden doorlopen
foreach($aFormulierVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($sValue))
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
echo '<html>
<head>
<title>Dank u voor u mail</title>
</head>
<body>
<h1>Dank u</h1><br>
<h3>Uw mail werd verstuurd</h3>';
echo '<p>Je hebt het formulier succesvol ingevuld! De volgende gegevens zijn bekend:</p>';
echo '<p>Naam: '.$aData['voornaam'].'<br />';
echo 'E-mail: '.$aData['mailadres'].'<br />';
echo 'Uw reactie: '.$aData['reactie'].'</p>';
$reactie = 'Naam: '.$aData['voornaam'].PHP_EOL;
.='E-mail: '.$aData['mailadres'].PHP_EOL;
.='Reactie: '.$aData['reactie'];
mail("[email protected]", "Mail van uw website", $reactie); //stuur de mail (aan, onderwerp, mail)
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier.html');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: formulier.php');
}
?>
Met formulierafhandeling, uit Blanche tutorial.
Die kan je ook beter leren, want dat boek van jou is zo oud als wat....
ach ja.
Wat is er dan volgens jullie een goed boek voor de complete beginner,
ik heb toch verlof, de dikte maakt niet uit
Gebruik de zoekfunctie.
Het complete boek: PHP 5 wel goed is. Ikzelf heb, de voorloper, php5 superboek. Het is een makkelijk boek vind ik, alleen de echte basis, zoals echo en if, van php staat d'r niet echt in. Hoe het met deze versie zit weet ik niet.
Dit boek gaat ook over OOP, d'r zal steeds meer OOP worden gebruikt. Als je dit eerder leert, zul je het meer toepassen, en later niet hoeven bij te leren.
Verder raad ik de tutorials van Blanche aan, die leggen op een hele goede manier de basis van php en sql uit.
Doe het zelf.
Ik denk dat Dit boek gaat ook over OOP, d'r zal steeds meer OOP worden gebruikt. Als je dit eerder leert, zul je het meer toepassen, en later niet hoeven bij te leren.
Verder raad ik de tutorials van Blanche aan, die leggen op een hele goede manier de basis van php en sql uit.
Jezpur schreef op 21.06.2008 20:35:
Gebruik de zoekfunctie.
Doe het zelf.
Hier misschien nog wat leesvoer weet niet of je er wat aan hebt: http://www.phphulp.nl/php/tutorials/8/575/1488/
offtopic:
Hah Karl nu ga ik echt op je zeiken hoor. Bij het 8ste bericht in dit topic zie ik dat jij zegt dat je de EDIT knop moet gebruken. En wat zie ik nou :o dat jij bericht 10 en 11 voor je rekening hebt genomen. Had je daar niet beter de edit knop voor kunnen gebruiken?
gr Martijn