Gegevens uit formulier ontvangen per e-mail
Ik ben mij aan het verdiepen in de wonderbaarlijke wereld van PHP en ik zit met een mailformuliertje en een stukje php om het formulier af te handelen, die niet doen wat ik had gehoopt dat ze zouden doen. De inhoud zou ik in de mail moeten ontvangen, maar dat gebeurt dus niet.
Dit is het formuliertje:
oefenbestand formulier.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<form action ="formulier uitlezen.php" method = "post">
<input type = "hidden" name = "to" value = "[email protected]">
<input type = "hidden" name = "subject" value = "mail van het oefenbestand">
<input type = "hidden" name = "redirect" value = "roterende homepage 1.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> <br />
<input type = "submit" value = "verzenden">
<input type = "hidden" name = "to" value = "[email protected]">
<input type = "hidden" name = "subject" value = "mail van het oefenbestand">
<input type = "hidden" name = "redirect" value = "roterende homepage 1.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> <br />
<input type = "submit" value = "verzenden">
En dit is het bestandje om het formulier af te handelen:
formulier uitlezen.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
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
<?php
ini_set ("SMTP", "smtp.zeelandnet.nl");
ini_set ("smtp_port", 25);
ini_set ("sendmail_from", "[email protected]");
$to = $_POST ["to"];
$subject = $_POST ["subject"];
$redirect = $_POST ["redirect"];
if (!$to)
{
echo "geen ontvanger opgegeven";
exit;
}
reset ($_POST);
while ($postvar = each ($_POST))
{
$varnaam = $postvar ['key'];
$varinhoud = $postvar ['value'];
$boodschap = $varnaam." = ".$varinhoud."\n";
}
mail ($to, $subject, $boodschap);
if (isset ($redirect))
{
header ("location: $redirect");
}
?>
ini_set ("SMTP", "smtp.zeelandnet.nl");
ini_set ("smtp_port", 25);
ini_set ("sendmail_from", "[email protected]");
$to = $_POST ["to"];
$subject = $_POST ["subject"];
$redirect = $_POST ["redirect"];
if (!$to)
{
echo "geen ontvanger opgegeven";
exit;
}
reset ($_POST);
while ($postvar = each ($_POST))
{
$varnaam = $postvar ['key'];
$varinhoud = $postvar ['value'];
$boodschap = $varnaam." = ".$varinhoud."\n";
}
mail ($to, $subject, $boodschap);
if (isset ($redirect))
{
header ("location: $redirect");
}
?>
Kan iemand mij zeggen wat ik hier fout doe (heb ook al wat geprobeerd met localhost)? Ik heb een mailaccount bij zeelandnet en die is gekoppeld aan m'n gmail. Daar lees ik altijd mijn mail uit. Misschien heeft het daar wat mee te maken?
Hopelijk stel ik hiermee geen al te stomme vraag en kan iemand me uit de brand helpen.
Bij voorbaat dank,
Koen
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/09/2014 21:50:27 door - Ariën -
En niet gewoon $_POST['reactie']?
Als je al je gegevens in de inhoud wil hebben, kijk eens hier naar:
Dat echoëd de hele $_POST-array naar je scherm.
Dat kan je ook in je $boodschap zetten.
Dank je voor je reactie.
Met $_POST['reactie'] sla ik inderdaad een hoop onnodige handelingen over.
Heb je nog een suggestie voor me hoe ik de gegevens uit het formulier in mijn mailbox binnen kan krijgen (ook al is het bij mij nu nog lokaal geknutsel via xampp)? Dat is voor mij de stap naar iets wat uiteindelijk een online werkregistratie voor op mijn werk moet worden.
Bij voorbaat dank,
Koen.
Ik heb hier een script die gebruik maakt van een class, PHPmailer.
Dit script is zo ingericht zodat je gemakkelijk emails kunt sturen gebruikmakend van een externe SMTP server.
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
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
<?php
// Eerst gaan we de error reporting aanzetten zodat we kunnen zien wat er misgaat
error_reporting(E_ALL & ~E_NOTICE);
// We gaan de autoloader inladen zodat we alles uit de class kunnen gebruiken
require 'PHPMailerAutoload.php';
// We maken een nieuw object aan zodat we een e-mail kunnen gaan versturen
$mail = new PHPMailer;
$mail->SMTPDebug = 3; // We willen HEEL graag zien wat er gebeurd en misschien fout gaat
$mail->isSMTP(); // We gaan een e-mail sturen via een andere server, Google in dit geval
$mail->Host = 'smtp.gmail.com'; // Hoe heet de server waar we vanaf willen sturen?
$mail->SMTPAuth = true; // Ja we willen de STMP gebruiken van een andere server
$mail->Username = '[email protected]'; // Jou gebruikersnaam van gmail incl. @gmail.com
$mail->Password = 'en-jou-wachtwoord'; // Jou wachtwoord voor Gmail
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = '[email protected]'; // Dit is de afzender van de e-mail
$mail->FromName = 'Jou-naam'; // En jou naam, dit voorkomt dat het gezien wordt als SPAM
$mail->addAddress('[email protected]', 'Joe User'); // Naar wie moet het toe?
$mail->isHTML(true); // Wordt de e-mail in HTML of niet?
$mail->Subject = 'Here is the subject'; // Jou onderwerp
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; // Hier jou HTML inhoud
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; // En hier alles zonder HTML, maar dit is niet verplicht
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
// Eerst gaan we de error reporting aanzetten zodat we kunnen zien wat er misgaat
error_reporting(E_ALL & ~E_NOTICE);
// We gaan de autoloader inladen zodat we alles uit de class kunnen gebruiken
require 'PHPMailerAutoload.php';
// We maken een nieuw object aan zodat we een e-mail kunnen gaan versturen
$mail = new PHPMailer;
$mail->SMTPDebug = 3; // We willen HEEL graag zien wat er gebeurd en misschien fout gaat
$mail->isSMTP(); // We gaan een e-mail sturen via een andere server, Google in dit geval
$mail->Host = 'smtp.gmail.com'; // Hoe heet de server waar we vanaf willen sturen?
$mail->SMTPAuth = true; // Ja we willen de STMP gebruiken van een andere server
$mail->Username = '[email protected]'; // Jou gebruikersnaam van gmail incl. @gmail.com
$mail->Password = 'en-jou-wachtwoord'; // Jou wachtwoord voor Gmail
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = '[email protected]'; // Dit is de afzender van de e-mail
$mail->FromName = 'Jou-naam'; // En jou naam, dit voorkomt dat het gezien wordt als SPAM
$mail->addAddress('[email protected]', 'Joe User'); // Naar wie moet het toe?
$mail->isHTML(true); // Wordt de e-mail in HTML of niet?
$mail->Subject = 'Here is the subject'; // Jou onderwerp
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; // Hier jou HTML inhoud
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; // En hier alles zonder HTML, maar dit is niet verplicht
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
Nu is het aan jou om een urenbriefje te maken die dan in de body van de e-mail gezet wordt.
Uiteraard kunnen we je erbij helpen mocht je vastlopen.
Ik ga ermee aan de slag!
PHPmailer even moet downloaden.
Sorry ik was nog vergeten dat je ook Heb er ook nog class.phpmailer.php bij moeten downloaden, but now i'm getting somewhere. Bericht komt nu binnen in mijn gmail. Ik knutsel verder!
Rickert Bombaklats op 30/09/2014 23:08:21:
Op PHP Versie 5.4.4 krijg je met phpmailer deprecated warnings op de get_magic_quotes() function.Sorry ik was nog vergeten dat je ook PHPmailer even moet downloaden.
Er wordt al wel een check gedaan door hun alleen kent php de functie niet en geeft hij daardoor een error.
Als hij erdoor is zal ik het aangeven en kunnen jullie de nieuwe versie weer downloaden.
http://www.freecontactform.com/email_form.php
gaf mij instructies en ik heb ze letterlijk overgenomen en in http://localhost/test.html geplaatst om de combinatie van html en php uit te proberen.
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "inschrijving";
bovenstaande tekst heb hiermee dus aangepast zoals gevraagd,
ook heb ik er nog geen spam filter er nog opgedaan totdat het nodig is.
Toch ontvang ik geen mail.
doe ik iets fout of moet ik SMTP instellen via XAMMP of local server?
Verder gebruik dit de normale mail()-functie van PHP. Je zult OF SMTP in moeten stellen in je php.ini (met restart van Apache), OF eenmailserver moeten installeren, maar dat raad ik niet aan voor beginners, gezien een onveilige mailserver als spam-doorgeefluik kan dienen.