Mail-functie
1. Inleiding
2. Basis
3. Headers
4. Error
1. Inleiding
In deze tutorial wil ik het gaan hebben over de mail-functies. Dus over hoe
je hoe moet gebruiken. Ik ga in deze tutorial niet al te uitgebreid in op alle
headers, omdat deze tutorial anders te uitgebreid wordt.
top
2. Basis
<?php
mail($naar_emailadres, $onderwerp, $bericht, $headers);
?>
|
Op deze manier moet je de mailfunctie invullen. Als eerste moet je het e-mailadres
invullen waar dit mailtje naar toe moet. Als tweede moet je een onderwerp toevoegen.
Als derde een bericht en als laatste de headers.
Zoals je ziet is het eigenlijk heel simpel om een mailtje te versturen.
Laten we nu maar een formulier gaan maken waarmee je een mail kunt versturen.
<?php
if (IsSet($_POST['submit']))
{
$naam_ontvanger =
$_POST['naar_naam'];
$email_ontvanger
= $_POST['naar_emailadres'];
$naam_verzender =
$_POST['van_naam'];
$email_verzender
= $_POST['van_emailadres'];
$onderwerp =
$_POST['onderwerp'];
$bericht_verzender
= $_POST['bericht_verzender'];
$headers =
"From: ".$naam_verzender."
<".$email_verzender.">
";
$bericht =
"
Beste ".$naam_ontvanger.",
".$naam_verzender."
heeft jou een berichtje gestuurd. Hieronder is zijn berichtje te lezen.
--------bericht--------
".$bericht_verzender."
--------bericht--------
mvg,
Sitemasters.be
";
mail($email_ontvanger,
$onderwerp,
$bericht, $headers);
}
else
{
?>
<form action=""
method="post">
Naam ontvanger: <input
type="text" name="naar_naam"><br />
Email ontvanger:
<input type="text" name="naar_emailadres"><br /><br />
Naam verzender: <input
type="text" name="van_naam"><br />
Email verzender:
<input type="text" name="van_emailadres"><br /><br />
Onderwerp: <input
type="text" name="onderwerp"><br />
bericht:<br />
<textarea name="bericht_verzender"></textarea>
<br /><br
/>
<input type="submit"
name="submit" value="versturen">
</form>
<?php
}
?>
|
Dit is een heel klein voorbeeldje van een mail-formulier. Je kunt hem gemakkelijk
uitbreiden maar voor deze tutorial is dat eigenlijk onnodig, dus heb ik de overbodige
dingen uitgelaten.
In dit voorbeeld wordt er een header toegevoegd.
$headers = "From: ".$naam_verzender." <".$email_verzender.">
";
Deze header zorgt ervoor dat, als iemand dit berichtje binnen krijgt, dat de
naam van de verzender mee wordt verstuurd met dit mailtje. Ook het e-mailadres
(waar je op kunt reageren) wordt meegestuurd. Dit is een header die je eigenlijk
niet uit je mail-formulier kunt weglaten.
Ook zie je dat ik in het bericht enters heb gegeven, en dat deze automatisch
(zonder dat je een <br /> hebt meegegeven) in een webapplicatie goed gezet
worden.
top
3. Headers
Nu gaan we een aantal headers bekijken en toevoegen.
$headers = "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=iso-8859-1
";
Deze twee headers zorgen ervoor dat je een bericht met HTML kan toevoegen. Dit
klinkt heel leuk, maar het kan voor slordigheden zorgen als je hem verstuurd
naar een webapplicaties die geen HTML ondersteunt.
$headers .= "Return-Path: jouw_naam <error@jouw_site.nl>
";
Deze header zorgt ervoor dat als er een fout is ontstaan bij het versturen
van een mailtje, dat je kan aangeven naar welke e-mailadres de fout/error gestuurd
wordt.
$headers .= "Reply-To: jouw_naam <reply@jouw_site.nl>
";
Deze header zorgt ervoor dat als ontvangers een reply terug willen sturen naar
jou, dat hun reactie naar dit adres wordt terug gestuurd.
$headers .= "Cc: birthdayarchive@example.com
";
Deze header zorgt ervoor dat er een Cc. wordt toegevoegd. Cc is een copy (Carbon
Copy) van het verstuurde mailtje.
$headers .= "Bcc: birthdaycheck@example.com
";
Deze header zorgt ervoor dat er een Bcc. wordt toegevoegd. Als je bij Bcc een
emailadres invult, dan kan niemand zien dat u naar die persoon een copy van
het mailtje heeft verstuurd. Bcc staat voor Blind Carbon Copy.
Er zijn nog veel meer headers, maar dit zijn de belangrijkste om te weten. Nu
gaan we het even toepassen in ons formuliertje.
<?php
if (IsSet($_POST['submit']))
{
$naam_ontvanger =
$_POST['naar_naam'];
$email_ontvanger
= $_POST['naar_emailadres'];
$naam_verzender =
$_POST['van_naam'];
$email_verzender
= $_POST['van_emailadres'];
$onderwerp =
$_POST['onderwerp'];
$bericht_verzender
= $_POST['bericht_verzender'];
$headers =
"From: ".$naam_verzender."
<".$email_verzender.">
";
$headers .=
"MIME-Version: 1.0
";
$headers .=
"Content-type: text/html; charset=iso-8859-1
";
$headers .=
"Return-Path: Mail-Error <error@mijnsite.nl>
";
$headers .=
"Reply-To: ".$naam_verzender."
<".$email_verzender.">
";
$headers .=
"Bcc: ".$email_verzender."
";
$bericht =
"
Beste ".$naam_ontvanger.",
".$naam_verzender."
heeft jou een berichtje gestuurd. Hieronder is zijn berichtje te lezen.
--------bericht--------
".$bericht_verzender."
--------bericht--------
mvg,
Sitemasters.be
";
$bericht =
nl2br($bericht);
mail($email_ontvanger,
$onderwerp,
$bericht, $headers);
}
else
{
?>
<form action=""
method="post">
Naam ontvanger: <input
type="text" name="naar_naam"><br />
Email ontvanger:
<input type="text" name="naar_emailadres"><br /><br />
Naam verzender: <input
type="text" name="van_naam"><br />
Email verzender:
<input type="text" name="van_emailadres"><br /><br />
Onderwerp: <input
type="text" name="onderwerp"><br />
bericht:<br />
<textarea name="bericht_verzender"></textarea>
<br /><br
/>
<input type="submit"
name="submit" value="versturen">
</form>
<?php
}
?>
|
Nu moet je goed opletten op 1 ding. Omdat wij van ons formulier een HTML-formulier
hebben gemaakt, worden alle enters niet meer mee geteld, wat ervoor zorgt dat
we alle tekst achter elkaar aan krijgen. Daarom heb ik onder het bericht een
nl2br
toegevoegd.
top
4. Error
Het kan gebeuren dat als je, jouw server niet goed geconfigureerd heb, deze foutmelding krijgt als je een e-mail probeert te versturen:
“can't connect to local MySQL server”
Dit lijkt een zwaar probleem maar het is eigenlijk heel simpel op te lossen.
De eerste stap is om je php.ini te openen. Deze kan aanwezig zijn in je windows-map
of in je apache-map. Dan zoek (Ctrl + F) je op [mail function].
Daar staat SMTP ergens bij. Het adres erachter verander je met de SMTP gegevens
van jouw provider. Bij mij was dit mail.chello.nl
Als je jouw server nu opnieuw opstart, dan kun je mail versturen via jouw webserver.
top
5. Einde
Dit was de (korte) tutorial over de mail-functie alweer. Zoals je ziet is
het eigenlijk een hele simpele maar handige functie om te kennen. Als je nog
iets mist in deze tutorial dan kun je dat naar mij doorsturen via een Privé
Bericht. Als je nog vragen hebt, kun je die stellen op het forum en NIET via
een Prive Bericht.
top
|