Mail functie
Ik heb een formulier gemaakt en dat wordt naar mijn mail gestuurd. Maar de headers komen niet goed aan. De headers komen boven aan in het bericht zelf te staan. Iemand een idee wat ik fout doe??
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
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
$adres = "info@?????.nl";
$headers .= "From $_POST[naam] <$_POST[email]>\r\n";
if ($_POST[verstuur])
{
if (empty($_POST[naam]))
{
echo 'U bent uw naam vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST[email]))
{
echo 'U bent uw e-mail adres vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST[onderwerp]))
{
echo 'U bent het onderwerp vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST[bericht]))
{
echo 'U bent het bericht vergeten in te vullen, probeer het nog eens.';
}
else
{
mail($adres, $_POST[onderwerp], $_POST[bericht], $headers);
echo 'Het bericht is verstuurd, bedankt voor uw reactie!!';
}
}
$headers .= "From $_POST[naam] <$_POST[email]>\r\n";
if ($_POST[verstuur])
{
if (empty($_POST[naam]))
{
echo 'U bent uw naam vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST[email]))
{
echo 'U bent uw e-mail adres vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST[onderwerp]))
{
echo 'U bent het onderwerp vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST[bericht]))
{
echo 'U bent het bericht vergeten in te vullen, probeer het nog eens.';
}
else
{
mail($adres, $_POST[onderwerp], $_POST[bericht], $headers);
echo 'Het bericht is verstuurd, bedankt voor uw reactie!!';
}
}
Gewijzigd op 01/01/1970 01:00:00 door Bassos
Dat zie ik niet direct, maar je doet wel nog meer fout.
Zet eens boven aan error_reporting(E_ALL);
je gebruikt namelijk een constante als index die niet bestaat (levert dus een notice op) wel meerdere zelfs.
Verder extend je de $headers variabele en declareer je die nergens.
Zet eens boven aan error_reporting(E_ALL);
je gebruikt namelijk een constante als index die niet bestaat (levert dus een notice op) wel meerdere zelfs.
Verder extend je de $headers variabele en declareer je die nergens.
Een constante als index? Ik vat hem niet helemaal. Zo diep zit ik nog niet in het php gebeuren. Zou je het op een andere manier kunnen uitleggen?
En het extenden van de variabele doe ik met de . toch? Dus die moet eruit. Ik heb dat zo regelrecht uit een tutorial van deze site. Maar misschien heb ik het verkeerd begrepen.
En het extenden van de variabele doe ik met de . toch? Dus die moet eruit. Ik heb dat zo regelrecht uit een tutorial van deze site. Maar misschien heb ik het verkeerd begrepen.
Gewijzigd op 01/01/1970 01:00:00 door Bassos
Een hele hoop notices ja:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Notice: Undefined variable: headers in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 8
Notice: Use of undefined constant verstuur - assumed 'verstuur' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 10
Notice: Use of undefined constant naam - assumed 'naam' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 12
Notice: Use of undefined constant email - assumed 'email' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 16
Notice: Use of undefined constant onderwerp - assumed 'onderwerp' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 20
Notice: Use of undefined constant bericht - assumed 'bericht' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 24
Notice: Use of undefined constant onderwerp - assumed 'onderwerp' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 30
Notice: Use of undefined constant bericht - assumed 'bericht' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 30
Notice: Use of undefined constant verstuur - assumed 'verstuur' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 10
Notice: Use of undefined constant naam - assumed 'naam' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 12
Notice: Use of undefined constant email - assumed 'email' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 16
Notice: Use of undefined constant onderwerp - assumed 'onderwerp' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 20
Notice: Use of undefined constant bericht - assumed 'bericht' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 24
Notice: Use of undefined constant onderwerp - assumed 'onderwerp' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 30
Notice: Use of undefined constant bericht - assumed 'bericht' in /usr/opt/usr/toppersuninl/DOMAIN/below/verwerk_mail.php on line 30
Overal waar je dit soort dingen doet: $_POST[verstuur]
moet je het veranderen in: $_POST['verstuur']
moet je het veranderen in: $_POST['verstuur']
Deze error hou ik over:
Die komt mij zo snel niet bekend voor en volgens mij komt regel 8 in je script niet overeen met de regels die je hier gepost hebt.
Misschien dat je die regel + de 2 regels er voor en de 2 regels er na even kan posten?
Misschien dat je die regel + de 2 regels er voor en de 2 regels er na even kan posten?
Gewijzigd op 01/01/1970 01:00:00 door Bo az
@boaz
Code (php)
1
2
3
4
5
6
2
3
4
5
6
error_reporting(E_ALL);
$adres = "info@???.nl";
$headers .= "From $_POST['naam'] <$_POST['email']>\r\n";
if ($_POST['verstuur'])
$adres = "info@???.nl";
$headers .= "From $_POST['naam'] <$_POST['email']>\r\n";
if ($_POST['verstuur'])
Gewijzigd op 01/01/1970 01:00:00 door Bassos
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
error_reporting(E_ALL);
$adres = "[email protected]";
// $headers moet je al eerder geinitialiseerd hebben, anders krijg je hier een notice op
$headers .= 'From: ' . $_POST['naam'] . '<' . $_POST['email'] . '>' . "\r\n";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// verwerk de mail
}
?>
error_reporting(E_ALL);
$adres = "[email protected]";
// $headers moet je al eerder geinitialiseerd hebben, anders krijg je hier een notice op
$headers .= 'From: ' . $_POST['naam'] . '<' . $_POST['email'] . '>' . "\r\n";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// verwerk de mail
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Ik heb het even aangepast naar je voorbeeld. Ik heb alleen nog niet de mogelijkheid om het te testen. Pas vanavond weer.
Maar wat bedoel je met de $headers moeten eerder geinitialiseerd worden?? Kun je een voorbeeld geven. Zodat ik ook weet waarom ik iets doe.
Maar wat bedoel je met de $headers moeten eerder geinitialiseerd worden?? Kun je een voorbeeld geven. Zodat ik ook weet waarom ik iets doe.
Als je dit doet:
en je hebt error_reporting op de juiste waarde staan (E_ALL), dan krijg je een waarschuwing. PHP gaat er dan namelijk vanuit dat de variabele $header al eerder is aangemaakt en een waarde heeft gekregen, bijvoorbeeld zo:
Als je in jouw script die variabele $header niet eerder aangemaakt hebt, hoor je een notice te krijgen.
en je hebt error_reporting op de juiste waarde staan (E_ALL), dan krijg je een waarschuwing. PHP gaat er dan namelijk vanuit dat de variabele $header al eerder is aangemaakt en een waarde heeft gekregen, bijvoorbeeld zo:
Code (php)
1
2
3
4
2
3
4
<?php
$header = "abc"; // aanmaken en waarde geven (initialiseren)
$header .= "def"; // er iets aan toevoegen
?>
$header = "abc"; // aanmaken en waarde geven (initialiseren)
$header .= "def"; // er iets aan toevoegen
?>
Als je in jouw script die variabele $header niet eerder aangemaakt hebt, hoor je een notice te krijgen.
Dat wil dus eigenlijk zeggen dat ik die punt voor het isteken weg moet halen en dan geeft ie geen notice meer? Maar werkt dan het script nog wel?
Dit is nu mijn volledige code en het werkt nu niet meer...
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
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
<?php
error_reporting(E_ALL);
$adres = "info@???.com";
$headers .= 'From: ' . $_POST['naam'] . '<' . $_POST['email'] . '>' . "\r\n";
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (empty($_POST['naam']))
{
echo 'U bent uw naam vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST['email']))
{
echo 'U bent uw e-mail adres vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST['onderwerp']))
{
echo 'U bent het onderwerp vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST['bericht']))
{
echo 'U bent het bericht vergeten in te vullen, probeer het nog eens.';
}
else
{
mail($adres, $_POST['onderwerp'], $_POST['bericht'], $headers);
echo 'Het bericht is verstuurd, bedankt voor uw reactie!!';
}
}
?>
error_reporting(E_ALL);
$adres = "info@???.com";
$headers .= 'From: ' . $_POST['naam'] . '<' . $_POST['email'] . '>' . "\r\n";
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (empty($_POST['naam']))
{
echo 'U bent uw naam vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST['email']))
{
echo 'U bent uw e-mail adres vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST['onderwerp']))
{
echo 'U bent het onderwerp vergeten in te vullen, probeer het nog eens.';
}
elseif (empty($_POST['bericht']))
{
echo 'U bent het bericht vergeten in te vullen, probeer het nog eens.';
}
else
{
mail($adres, $_POST['onderwerp'], $_POST['bericht'], $headers);
echo 'Het bericht is verstuurd, bedankt voor uw reactie!!';
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Bassos
Het werkt niet meer? Wat werkt er niet dan? Wat gebeurt er, wordt er een foutmelding gegeven?
Hij geeft zoiezo die notice/foutmelding van de headers, omdat ik daar nog niks aan gedaan heb. Maar het probleem is dat er helemaal geen mail aankomt op het beoogde adres...
Controleer ook eens of de mail wel verstuurd wordt door php. Dan weet je of er wel iets gestuurd wordt. Bijvoorbeeld met onderstaande code:
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Ik laat hem nu naar een hotmailadres sturen maar ik zie net dat hotmail eruit ligt. Dus het kan zijn dat hij het daarom niet doet. Maar ik zal morgen eens verder kijken. Ik moet nu namelijk weg...
$adres = "info@?????.nl"; <= ik snap dat het voor test maar mag dit wel zo?
Ik neem aan dat de TS dat alleen gedaan heeft zodat het mail adres niet zichtbaar is om spam te voorkomen...
Hotmail heeft een (te) hoog ingesteld spamfilter.
Stuur is naar een ander adres en kijk of ie daar wel aankomt. Met alleen de from header kom je er niet bij hotmail.
Stuur is naar een ander adres en kijk of ie daar wel aankomt. Met alleen de from header kom je er niet bij hotmail.




