Door
Vraag PHP
op 17-10-2017 14:15
gewijzigd op 17-10-2017 16:36
8.294 views
Hallo programmeurs. Ik wil zelf een website maken. Als de bezoekers een vraag hebben kunnen ze een formulier invullen. De gegevens worden dan naar mijn email adress doorgestuurd. Is dat mogelijk in PHP? Zoja, wat is daar de code voor?
Inderdaad, wat Adaptive Solution zegt...
We willen je graag helpen, maar zelf wat zoekwerk uitvoeren vinden we ook erg fijn.
Verder heb ik even wat code-tags geplaatst. Gelieve deze zelf toe te voegen in het vervolg. Zie ook de UBB-codes in de 'Veelgestelde Vragen'.
Hallo iedereen, bedankt voor de snelle reacties! Ik zal even wat verduidelijken:
Het is inderdaad voor school. We moeten (vwo4) een website maken. We hebben javascript, html en css gehad. Alle andere talen mocht je opzoeken. Automatisch e-mails versturen kan alleen via php had ik gelezen. Ik heb (heel) veel op internet rondgekeken, YouTube filmpjes gekeken en veel dingen geprobeerd, maar niets lukte. Dus daarom dit forum.....
Ik heb de volgende code gevonden, maar die werkt niet. Als er iemand tijd over heeft, en er even naar zou willen kijken, zou je me er erg mee helpen!!!! [email protected] is btw niet mijn echte email adress.
Groetjes Maarten
<?php
if(isset($_POST['submit'])){
$to = "[email protected]"; // this is your Email address
$from = $_POST['email']; // this is the sender's Email address
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$subject = "Form submission";
$subject2 = "Copy of your form submission";
$message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
$message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];
$headers = "From:" . $from;
$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
// You can also use header('Location: thank_you.php'); to redirect to another page.
}
?>
<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>
<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
Verder raad ik aan om error_reporting op E_ALL te zetten, en display_errors aan te zetten.
Een mooie if-else om je mail() functie kan ook geen kwaad, zodat je zeker weet of de functie zijn werk gedaan heeft, in plaats van zelf maar te bepalen dat de mail verzonden is.
Het vervelende van email versturen vanuit PHP is dat er veel factoren zijn waarmee het mis kan gaan.
- vanaf de eigen computer gaat het niet zomaar werken. Je mailserver (afhankelijk van het besturingssysteem) moet geïnstalleerd zijn, gestart zijn en juist geconfigureerd zijn.
- vanaf de hosting provider is het raadzaam om eens goed de FAQ's door te lezen. Sommige ondersteunen de php mail() functie helemaal niet en bieden slechts een SMTP server aan en sommige hebben een rijtje voorwaarden waaraan je moet voldoen. één van de veel voorkomende voorwaarden is dat de FROM: een bestaande mailbox moet zijn bij de hosting provider. Mocht de hosting provider inderdaad alleen SMTP ondersteunen dan zul je PHPMailer nodig hebben om je mail te versturen. Daar kunnen we je eventueel wel bij helpen maar je moet dan wel weer goed de settings HOST, PORT, ENCRYPTIE, LOGINNAAM, PASSWORD weten.
Tip:
Neem onderstaande test script even over en probeer hiermee een eerste mail te sturen.
<?php
/*
* TEST JE EMAIL
*/
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
/*
* INDIEN MOGELIJK VUL HIER ONDER BIJVOORKEUR EEN BESTAAND EMAILADRES IN DAT EINDIGT OP JE EIGEN DOMEINNAAM
*
* Voorbeeld:
*
* Je domeinnaam is phphulp.nl
* Je hebt een mailadres aangemaakt: [email protected]
* $from = '[email protected]';
*/
$from = '[email protected]';
/*
* WAAR WIL JE JE TESTMAIL HEEN STUREN?
*/
$to = '[email protected]';
$subject = 'PHP Mail Test script';
$message = 'Dit mailtje is een testbericht.';
Het vervelende van email versturen vanuit PHP is dat er veel factoren zijn waarmee het mis kan gaan.
- vanaf de eigen computer gaat het niet zomaar werken. Je mailserver (afhankelijk van het besturingssysteem) moet geïnstalleerd zijn, gestart zijn en juist geconfigureerd zijn.
- vanaf de hosting provider is het raadzaam om eens goed de FAQ's door te lezen. Sommige ondersteunen de php mail() functie helemaal niet en bieden slechts een SMTP server aan en sommige hebben een rijtje voorwaarden waaraan je moet voldoen. één van de veel voorkomende voorwaarden is dat de FROM: een bestaande mailbox moet zijn bij de hosting provider. Mocht de hosting provider inderdaad alleen SMTP ondersteunen dan zul je PHPMailer nodig hebben om je mail te versturen. Daar kunnen we je eventueel wel bij helpen maar je moet dan wel weer goed de settings HOST, PORT, ENCRYPTIE, LOGINNAAM, PASSWORD weten.
Tip:
Neem onderstaande test script even over en probeer hiermee een eerste mail te sturen.
<?php
/*
* TEST JE EMAIL
*/
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
/*
* INDIEN MOGELIJK VUL HIER ONDER BIJVOORKEUR EEN BESTAAND EMAILADRES IN DAT EINDIGT OP JE EIGEN DOMEINNAAM
*
* Voorbeeld:
*
* Je domeinnaam is phphulp.nl
* Je hebt een mailadres aangemaakt: [email protected]
* $from = '[email protected]';
*/
$from = '[email protected]';
/*
* WAAR WIL JE JE TESTMAIL HEEN STUREN?
*/
$to = '[email protected]';
$subject = 'PHP Mail Test script';
$message = 'Dit mailtje is een testbericht.';
if(mail($to,$subject,$message, $headers)) {
echo 'Testmail is verzonden naar ' . $to;
} else {
echo 'Het verzenden van de mail is MISLUKT!';
}
?>
[size=xsmall]Toevoeging op 17/10/2017 23:53:27:[/size]
Onthoudt tevens dat als het script zegt dat de mail succesvol verstuurt is dit nog geen enkele garantie is dat een mail ook bij de ontvanger aankomt.
Hallo Frank, bedankt voor je reactie. Ik heb echt totaal geen verstand van PHP. Ik heb jouw code toegevoegd, en dit zou het dan moeten worden??
<?php
/*
* TEST JE EMAIL
*/
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
/*
* INDIEN MOGELIJK VUL HIER ONDER BIJVOORKEUR EEN BESTAAND EMAILADRES IN DAT EINDIGT OP JE EIGEN DOMEINNAAM
*
* Voorbeeld:
*
* Je domeinnaam is phphulp.nl
* Je hebt een mailadres aangemaakt: [email protected]
* $from = '[email protected]';
*/
$from = '[email protected]';
/*
* WAAR WIL JE JE TESTMAIL HEEN STUREN?
*/
$to = '[email protected]';
$subject = 'PHP Mail Test script';
$message = 'Dit mailtje is een testbericht.';
$headers = 'From: ' . $from . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
if(mail($to,$subject,$message, $headers)) {
echo 'Testmail is verzonden naar ' . $to;
} else {
echo 'Het verzenden van de mail is MISLUKT!';
}
?>
<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>
<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
.
Dit werkt helaas ook niet. Je zegt ook dat er een grote kans is dat mailtjes niet aankomen. Ik denk dat het dan handiger is om een comment system te maken waarop mensen een reactie achter kunnen laten, die dan op de admin pagina wordt geplaats.
Dan gaat dat ook niet werken. JE moet dan de SMTP instelling aanpassen.
Welk php dingetje gebruik je? WAMP, XAMMP, Laragon?
Verder moet je wel je formulier aan je mail script knopen anders heeft dat formulier niet zoveel zin.