Mailfunctie komt 15 minuten achter.
Ik heb een simpel contact formulier in elkaar geprutst maar ik kom op een probleem. Het werkt alleen als ik iets verzend, komt het 15 minuten maar in mijn postvak in.
Hoe zou ik dit kunnen oplossen? En waar ligt het probleem?
Dem
Hoe zou ik dit kunnen oplossen? En waar ligt het probleem?
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
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
<?php
$naar = 'naam.achternaam@telenet.be';
$onderwerp = 'Contactformulier';
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['versturen'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
$naam = $_POST['naam'];
$bericht = $_POST['bericht'];
$fout = false;
}
if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
{
$headers .= 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
?>
<html>
<body>
<form method="post" action="">
<ul>
<li>naam</li>
<li><input type="text" name="naam" /></li>
<li>bericht</li>
<li><input type="text" name="bericht" /></li>
<input type="submit" name="versturen" value="Verstuur bericht" /></li>
</ul>
</form>
</html>
</body>
$naar = 'naam.achternaam@telenet.be';
$onderwerp = 'Contactformulier';
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['versturen'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
$naam = $_POST['naam'];
$bericht = $_POST['bericht'];
$fout = false;
}
if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
{
$headers .= 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
?>
<html>
<body>
<form method="post" action="">
<ul>
<li>naam</li>
<li><input type="text" name="naam" /></li>
<li>bericht</li>
<li><input type="text" name="bericht" /></li>
<input type="submit" name="versturen" value="Verstuur bericht" /></li>
</ul>
</form>
</html>
</body>
Dem
Gesponsorde koppelingen:
Je bedoelt dat het 15 minuten duurt voordat jij de mail ziet?
Dan blijft het waarschijnlijk eerst ergens hangen. Kijk eens in de transport headers van je mail wat daar staat.
Dan blijft het waarschijnlijk eerst ergens hangen. Kijk eens in de transport headers van je mail wat daar staat.
Hoe bedoel je?
Moet ik kijken naar de mail die ik ontvangen heb of ... ?
Moet ik kijken naar de mail die ik ontvangen heb of ... ?
Kloppen je headers wel/zijn ze compleet. Gebruik daarom liever bv phpmailer of swiftmailer.
Waarom variabelen kopiƫren?
Ik neem aan dat je ergens anders controleert of de velden wel gevuld zijn?
Spring op de juiste wijze in. Je opent nu een if(isset($_POST['versturen'])) (als dit bedoelt is om te controleren of het formulier verzonden is, kun je beter ook gebruik maken van if ($_SERVER['REQUEST_METHOD'] == 'POST')) en sluit deze af na inspringen. De volgende if open je vervolgens ingesprongen. Zo lijkt het alsof het een vervolg op elkaar is.
Overigens vraag ik me af waarom je $fout = false; doet. Die kun je toch in 1 keer afhandelen?
Mis ook je controle op fouten. if($fout == false) --> $fout bestaat niet altijd...
Waarom variabelen kopiƫren?
Ik neem aan dat je ergens anders controleert of de velden wel gevuld zijn?
Spring op de juiste wijze in. Je opent nu een if(isset($_POST['versturen'])) (als dit bedoelt is om te controleren of het formulier verzonden is, kun je beter ook gebruik maken van if ($_SERVER['REQUEST_METHOD'] == 'POST')) en sluit deze af na inspringen. De volgende if open je vervolgens ingesprongen. Zo lijkt het alsof het een vervolg op elkaar is.
Overigens vraag ik me af waarom je $fout = false; doet. Die kun je toch in 1 keer afhandelen?
Mis ook je controle op fouten. if($fout == false) --> $fout bestaat niet altijd...
Gewijzigd op 31/01/2012 19:07:56 door Obelix en Idefix
Volgens mij is er al een keer iets geschreven over het feit dat je:
1. verkeerde headers meegeeft
2. je bericht op deze manier ook nog eens vernaggelt, je dient valide html pagina's te versturen als je geen plain/text verstuurd.
3. je beter een mail class - php mailer / swift mailer - kunt impleteren dan zelf zo aan te lopen prutsen.
En het dan ook nog maar niet te hebben over de manier waarop jij je post afhandeld/controleerd en valideerd.
Note: als je zo blijft prutsen, zal het mij totaal niet verbazen dat ze speciaal voor jouw de mail functie blokkeren.
1. verkeerde headers meegeeft
2. je bericht op deze manier ook nog eens vernaggelt, je dient valide html pagina's te versturen als je geen plain/text verstuurd.
3. je beter een mail class - php mailer / swift mailer - kunt impleteren dan zelf zo aan te lopen prutsen.
En het dan ook nog maar niet te hebben over de manier waarop jij je post afhandeld/controleerd en valideerd.
Note: als je zo blijft prutsen, zal het mij totaal niet verbazen dat ze speciaal voor jouw de mail functie blokkeren.
ligt ut niet aan de instellingen van je email client?
Ik ga even wat meer informatie van php mailer opzoeken.
Dit was de eerste ker dat ik een contact formulier maakte.
Dit was de eerste ker dat ik een contact formulier maakte.
Je outlook email client checked om de 15 min?
Je smartphone client checked om de 15 min?
Je smartphone client checked om de 15 min?
Aad B op 31/01/2012 20:11:06:
Je outlook email client checked om de 15 min?
Je smartphone client checked om de 15 min?
Je smartphone client checked om de 15 min?
Dat zal het toch niet zijn... :s
Zo vaak!



