probleem met mail functie
aan de hand van onderstaand script probeer ik mijn gebruiker te bevestigen van de gegevens die hij me doorstuurde via een formulier.
Na uploaden krijg ik niks, geen mail, geen foutmelding en ook geen echo dat mail niet of wel is verzonden.
Kan iemand zeggen wat ik fout doe?
Alvast bedankt!
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
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$onderwerp="Bevestiging van uw gegevens";
$adres=$_POST['email'];
$bericht= '
<html>
<head>
</head>
<body>Geachte '.$_POST['voornaam'] $_POST['naam'].',
<p>
Met deze mail bevestigen wij uw inschrijvng voor de kwalificatiewedstrijden voor de simultaan van Karpov meeets Karpov. <br>
Bewaar deze mail zorgvuldig, druk hem af en breng hem mee op 23 mei, hij bevat allle benodigde gegevens.
<p>
'.$_POST['naam'] $_POST['voornaam'].'<br>
'.$_POST['adres'].' <br>
</body>
</html>';
$headers = 'MIME-Version: 1.0' . "\r\n".
'Content-type: text/html; charset=iso-8859-1' . "\r\n";
if (mail($adres,$onderwerp,$bericht,$headers))
{
echo "mail is succesvol verzonden";
}
else
{
echo " de mail is niet verzonden";
}
?>
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$onderwerp="Bevestiging van uw gegevens";
$adres=$_POST['email'];
$bericht= '
<html>
<head>
</head>
<body>Geachte '.$_POST['voornaam'] $_POST['naam'].',
<p>
Met deze mail bevestigen wij uw inschrijvng voor de kwalificatiewedstrijden voor de simultaan van Karpov meeets Karpov. <br>
Bewaar deze mail zorgvuldig, druk hem af en breng hem mee op 23 mei, hij bevat allle benodigde gegevens.
<p>
'.$_POST['naam'] $_POST['voornaam'].'<br>
'.$_POST['adres'].' <br>
</body>
</html>';
$headers = 'MIME-Version: 1.0' . "\r\n".
'Content-type: text/html; charset=iso-8859-1' . "\r\n";
if (mail($adres,$onderwerp,$bericht,$headers))
{
echo "mail is succesvol verzonden";
}
else
{
echo " de mail is niet verzonden";
}
?>
Dit script werkte perfect tot ik de post variabelen in mijn $bericht plaatste.
Test eens met een zeer eenvoudig emailtje naar je zelf:
Als de provider de mail functie niet support dan kun je kijken of ze wel een smtp server ter beschikking stellen. Doen ze dat ook niet dan zijn er nog duizenden andere smtp servers beschikbaar. Bijvoorbeeld die van gmail of hotmail (account vereist).
Je kunt dan alsnog email versturen vanaf je website maar dit moet dan over SMTP. Dit kan echter niet met de standaard PHP mail() functie. Hiervoor kun je het beste PHPMailer downloaden: https://github.com/Synchro/PHPMailer
Gewijzigd op 04/10/2014 17:17:46 door Frank Nietbelangrijk
Op regel 16 mist een punt.
Ondertussen is dit probleem opgelost. Was inderdaad een foutje bij het escapen van de variabelen. De grootste reden dat ik "panikeerde" was omdat hij geen foutmelding gaf ondanks het feit dat ik in mijn ini meegaf om het wel te doen. Maar blijkbaar duurt dit een tijdje. Hoe dan ook harteljik dank voor de hulp!
Je weet ook dat je een (groot) risico loopt, door zonder enige controle de input vanuit een formulier te gebruiken? Wat zou er gebeuren als ik meerdere mailadressen invul?
Frank Nietbelangrijk op 04/10/2014 17:16:06:
Vrijwel alle (betaalde) providers ondersteunen een mail functie echter er wordt steeds meer overgegaan op authenticated smtp waardoor je dus credentials mee moet geven. Overleg met je provider of lees de faq. Credentials meegeven gaat eenvoudig met phpmailer alhoewel daar voor php 5.4 een deprecated functie in zit. Google en Hotmal/Outlook gaan steeds moeilijker doen om als smtp slaafje voor allerlei websites gebruikt te worden. Maar nogmaals, de meeste serieuze hosters/providers ondersteunen een emailfunctie.Niet alle providers ondersteunen de mail() functie.
Gewijzigd op 09/10/2014 20:06:39 door Aad B
Obelix en Idefix op 09/10/2014 19:47:47:
Je weet dat het aanmaken van een variabele op regel 5 wat zinloos is?
Je weet ook dat je een (groot) risico loopt, door zonder enige controle de input vanuit een formulier te gebruiken? Wat zou er gebeuren als ik meerdere mailadressen invul?
Je weet ook dat je een (groot) risico loopt, door zonder enige controle de input vanuit een formulier te gebruiken? Wat zou er gebeuren als ik meerdere mailadressen invul?
Weet ik wel, vandaar dat de controle van alle deze input al gebeurd is op een hoger niveau. In principe spreekt geen enkele "gebruiker" dit script aan, enkkel de beherder.
Alvorens hij dit te zien krijgt is er controle op input type, mysql en html.
Maar bedankt voor de tips.
De Clercq Andy op 09/10/2014 21:19:50:
Meen je dat echt? Hoe dan? Dit lijkt gewoon het eerste beste voorbeeldscriptje uit een boek of van internet. Neem de waarschuwing serieus.Weet ik wel, vandaar dat de controle van alle deze input al gebeurd is op een hoger niveau.