format van mail via PHP
Ik heb een eenvoudig contactformuliertje:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<form method="post" action="emailscript.php">
Naam: <input type="text" name="naam"><p>
E-mailadres: <input type="text" name="emailadres"><p>
Je bericht: <textarea name="bericht"></textarea><p>
<input type="submit" value="Verstuur bericht">
</form>
Naam: <input type="text" name="naam"><p>
E-mailadres: <input type="text" name="emailadres"><p>
Je bericht: <textarea name="bericht"></textarea><p>
<input type="submit" value="Verstuur bericht">
</form>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$message = print_r($_POST, true);
mail("[email protected]", "Mail vanaf de website", $message);
header('Location: bedankt.html');
?>
$message = print_r($_POST, true);
mail("[email protected]", "Mail vanaf de website", $message);
header('Location: bedankt.html');
?>
De ontvangen mail ziet er dan vrij basic uit:
Ik zou graag de lay-out van deze mail willen aanpassen. Wie helpt?
Vriendelijke groet,
Guido
De print_r() functie is vooral bedoeld voor ontwikkeling, zodat je kan zien wat er in een array zit. Op je 'live site' behoor je dit ook niet te gebruiken, en netjes de juiste $_POST waardes te echo'en, of je array met foreach door te lopen. Het boeit je bezoekers echt niks dat je een array gebruikt, en wat er in verpakt zit.
Dus als je de waardes los wilt tonen: $_POST['naam'], $_POST['emailadres'] etc....
Ik neem aan dat je deze basis hopelijk wel kent, lees het anders eens rustig door.
Nog een advies: Plaats na een location-header een exit();, want je script moet dan ook stoppen, en geen andere dingen uitvoeren.
Gewijzigd op 20/05/2019 19:39:41 door - Ariën -
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$message = '
<!DOCTYPE html>
<html lang="nl" xml:lang="nl" xmlns="http://www.w3.org/1999/xhtml">
<head>';
?>
$message = '
<!DOCTYPE html>
<html lang="nl" xml:lang="nl" xmlns="http://www.w3.org/1999/xhtml">
<head>';
?>
Enzovoort.
Maak er dus een volledige pagina van die correcte html bevat.
Gewijzigd op 20/05/2019 19:41:37 door - SanThe -
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
Ook kan je hier bepalen of je HTML wilt gebruiken, of andere dingen.
Gewijzigd op 20/05/2019 19:44:57 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$message =
"Naam: {$_POST['naam']}\n" .
"E-mailadres: {$_POST['emailadres']}\n" .
"Bericht:\n\n{$_POST['bericht']}"
mail("[email protected]", "Mail vanaf de website", $message);
header('Location: bedankt.html');
?>
$message =
"Naam: {$_POST['naam']}\n" .
"E-mailadres: {$_POST['emailadres']}\n" .
"Bericht:\n\n{$_POST['bericht']}"
mail("[email protected]", "Mail vanaf de website", $message);
header('Location: bedankt.html');
?>
Voordeel is dat je geen gedoe hebt met htmlspecialchars(), geen extra headers, enz. Note: ik ben er wel even vanuit gegaan dat alle velden in de $_POST bestaan.
Daarmee bestaat het veld "naam" toch; of zie ik dat verkeerd?
Vriendelijke groet,
Guido
https://css-tricks.com/sending-nice-html-email-with-php/
HTML headers toevoegen en dan kan je zo je body gaan opmaken met extra HTML.
HTML headers toevoegen en dan kan je zo je body gaan opmaken met extra HTML.
Guido van Harten op 21/05/2019 08:47:17:
Daarmee bestaat het veld "naam" toch; of zie ik dat verkeerd?
Bij "normaal" gebruik zal het veld zeker bestaan. Maar alles wat client-side gebeurt ("in de browser") kan gemanipuleerd worden. Ondanks dat je dus een POST binnen krijgt kan het dus zijn dat er velden ontbreken, andere velden zijn toegevoegd, of dat de content van het veld niet is wat je verwacht (het veld "emailadres" hoeft bijvoorbeeld helemaal geen geldig e-mailadres te zijn, maar misschien "<'" - als iemand wat SQL-injectie en/of XSS wil testen).
Daarvoor bestaat (formulier)validatie. Een controlestap voordat je alles verder (blindelings) verwerkt.