Fout in contact formulier
Ik heb een probleempje. Mensen zeggen dat ze me hebben geprobeerd te berijken via dit contact formulier. Maar soms (LET OP!: SOMS) komt de email niet door, weet iemand 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
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";
// is niet 100% !!!
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
echo "Je bent je naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn ";
echo "dat je een verkeerd e-mail adres hebt ingevuld.<p>";
}
// form + tabel
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<form method=\"POST\" contact=\"/contact\">";
echo "
<tr><td>Naam:</td>
<td><input type=\"text\" class=\"input\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>
<tr><td>E-Mail:</td>
<td><input type=\"text\" class=\"input\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>
<tr><td>Onderwerp:</td>
<td><input class=\"input\" type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>
<tr><td valign=\"top\"><br>Bericht:</td>
<td><textarea class=\"input\" name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</textarea></td></tr>
<tr><td> </td>
<td><input class=\"input\" type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>";
// sluit form + tabel
echo "</form>";
echo "</table>";
echo "
<br />
E-mail: [email protected]
<br />
<br />
» <a href=\"#\" onclick=\"window.open('/pages/popup.php?w=telefoon','Telefoon','width=350,height=200'); return false\">Telefoon</a>
<br />
» <a href=\"#\" onclick=\"window.open('/pages/popup.php?w=voorwaarden','Telefoon','width=500,height=300'); return false\">Voorwaarden</a>
<br />
<br />
Chocolade & Zo<br />
Prinses Margrietlaan 14<br />
7941 XE Meppel<br />
";
}
// versturen naar
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Contact Formulier\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Bericht:\n\n";
$inhoud_mail .= $_POST['msggs'] . "\n\n";
$inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/
// ------
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
$headers = stripslashes($headers);
$headers = str_replace("\n", "", $headers); // Verwijder \n
$headers = str_replace("\r", "", $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
echo "Uw bericht is verzonden!<br><br>";
echo "Bedankt voor het versturen van een bericht.<br>";
echo "U zult snel een antwoord krijgen indien dit nodig is.";
}
?>
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";
// is niet 100% !!!
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))
{
echo "Je bent je naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn ";
echo "dat je een verkeerd e-mail adres hebt ingevuld.<p>";
}
// form + tabel
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<form method=\"POST\" contact=\"/contact\">";
echo "
<tr><td>Naam:</td>
<td><input type=\"text\" class=\"input\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>
<tr><td>E-Mail:</td>
<td><input type=\"text\" class=\"input\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>
<tr><td>Onderwerp:</td>
<td><input class=\"input\" type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>
<tr><td valign=\"top\"><br>Bericht:</td>
<td><textarea class=\"input\" name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</textarea></td></tr>
<tr><td> </td>
<td><input class=\"input\" type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>";
// sluit form + tabel
echo "</form>";
echo "</table>";
echo "
<br />
E-mail: [email protected]
<br />
<br />
» <a href=\"#\" onclick=\"window.open('/pages/popup.php?w=telefoon','Telefoon','width=350,height=200'); return false\">Telefoon</a>
<br />
» <a href=\"#\" onclick=\"window.open('/pages/popup.php?w=voorwaarden','Telefoon','width=500,height=300'); return false\">Voorwaarden</a>
<br />
<br />
Chocolade & Zo<br />
Prinses Margrietlaan 14<br />
7941 XE Meppel<br />
";
}
// versturen naar
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Contact Formulier\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Bericht:\n\n";
$inhoud_mail .= $_POST['msggs'] . "\n\n";
$inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/
// ------
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
$headers = stripslashes($headers);
$headers = str_replace("\n", "", $headers); // Verwijder \n
$headers = str_replace("\r", "", $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
echo "Uw bericht is verzonden!<br><br>";
echo "Bedankt voor het versturen van een bericht.<br>";
echo "U zult snel een antwoord krijgen indien dit nodig is.";
}
?>
Hmm...
Toevallig had ik de laatste tijd hetzelfde probleem, nu is het sinds ik op een ander servertje zit opgelost... Misschien is de mailserver dus wel de oorzaak?
Toevallig had ik de laatste tijd hetzelfde probleem, nu is het sinds ik op een ander servertje zit opgelost... Misschien is de mailserver dus wel de oorzaak?
De mail gaat altijd naar hetzelfde adres en het komt soms niet aan....
Provider bellen.
Provider bellen.
regel 105:
zet dat even in een if/else
if(mail())
{
echo 'mail verstuurd';
}
else
{
echo 'mail niet verstuurd';
}
zet dat even in een if/else
if(mail())
{
echo 'mail verstuurd';
}
else
{
echo 'mail niet verstuurd';
}
@PHP Newbie
Inderdaad is dat wel wat netter, maar dat lost het probleem nog niet op ;-)
Het ligt gewoon aan de provider, gewoon ff naar toe stappen en hem een mep verkopen? :p
Inderdaad is dat wel wat netter, maar dat lost het probleem nog niet op ;-)
Het ligt gewoon aan de provider, gewoon ff naar toe stappen en hem een mep verkopen? :p
'PHP:
regel 105:
zet dat even in een if/else
if(mail())
{
echo 'mail verstuurd';
}
else
{
echo 'mail niet verstuurd';
}
zet dat even in een if/else
if(mail())
{
echo 'mail verstuurd';
}
else
{
echo 'mail niet verstuurd';
}
'Luke:
@PHP Newbie
Inderdaad is dat wel wat netter, maar dat lost het probleem nog niet op ;-)
Het ligt gewoon aan de provider, gewoon ff naar toe stappen en hem een mep verkopen? :p
Inderdaad is dat wel wat netter, maar dat lost het probleem nog niet op ;-)
Het ligt gewoon aan de provider, gewoon ff naar toe stappen en hem een mep verkopen? :p
Hmm, op de manier van PHPNewbie weet je in ieder geval wel zeker of het is gelukt, en anders krijgt de gebruiker nog een melding. Als de mail dan niet binnen komt en er staat dat het is gelukt, dan moet je inderdaad ff de provider bellen. Best lullig overigens
Dit onderwerp is al vaker aan de orde geweest, maar dan meestal in combinatie met GMail, Hotmail, spambox/spamfilter.
De oplossing was altijd: geef de goede headers mee. Voor mij werk dit:
De oplossing was altijd: geef de goede headers mee. Voor mij werk dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$header = "From: ".$naam." <".$mail.">\n";
$header .= "Reply-To: ".$mail."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: text/plain; charset=utf-8\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$header .= "X-Mailer: PHP v".phpversion();
?>
$header = "From: ".$naam." <".$mail.">\n";
$header .= "Reply-To: ".$mail."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: text/plain; charset=utf-8\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$header .= "X-Mailer: PHP v".phpversion();
?>
@ kees
Thx!
Thx!




