Home
Contact
Over Open-T
Open Source

Web Tip #7 - Stuur email met PHP

Het is eenvoudig mogelijk om met PHP een email te versturen. De mogelijkheden zijn vrijwel onbeperkt. U kunt bijvoorbeeld iemand die een formulier op uw website heeft ingevuld met een vraag of bestelling een bevestiging sturen. Of een nieuwsbrief automatisch versturen. Of regelmatig een backup van uw site emailen. Of ... u kunt zelf vast nog veel meer verzinnen.

Configuratie

Ten eerste moeten de mail instellingen in php.ini worden geconfigureerd. Op een Windows host moet de SMTP server worden geconfigureerd:
[mail function]
SMTP = localhost
smtp_port = 25
De smtp_port is bijna altijd 25; vervang localhost door uw SMTP host.
Op een Unix/Linux host gaat het iets anders, hier dient u het pad naar sendmail aan te geven, eventueel met parameters. Als u een locale sendmail in uw pad heeft, is er helemaal niets nodig:
;sendmail_path =

Een eenvoudige email

De PHP functie mail wordt gebruikt om emails te versturen. Dat gaat als volgt:
<?php
  $bodytext
="Mijn eerste PHP email!\n";
  
$subject="Mijn email onderwerp";
  
mail("info@open-t.nl"$subject,$bodytext);
?>
Vervang wel info@open-t.nl door uw eigen email adres. Tijd om het script te runnen en in uw inbox te kijken...

Headers

De email komt aan, met de juiste body tekst, maar het afzender adres is meestal niet 100% correct. Dit komt omdat er geen expliciete headers worden toegevoegd. Dit zult u dus zelf moeten doen. De headers moet u zelf formatteren. De header string bestaat uit één of meerdere regels die elk beginnen met een keyword, een dubbele punt, een spatie en dan de inhoud, afgesloten met een newline. Bijvoorbeeld als volgt:
<?php
  $headers
= "From: \"Joost Horward\" <joost@open-t.nl>\n";
  
$headers .= "To: \"Info\" <info@open-t.nl>\n";
  
$bodytext = "Mijn tweede PHP email!\n";
  
$subject = "Mijn email onderwerp";
  
mail("info@open-t.nl"$subject,$bodytext,$headers);
?>
Sommige eenvoudige smtp mailers vervangen de headers echter, het is dus zaak om op uw eigen systeem uit te proberen wat er gebeurt.

HTML mail

Tot nu toe is uw mail 'platte' ASCII tekst. Een HTML mail is natuurlijk veel mooier. Dat kan als volgt:
<?php
  $headers   
="Content-Type: text/html;\n";  
  
$bodytext  ="<html><p>Dit is een HTML email.";
  
$bodytext .="Hiermee kunt u leuke dingen doen zoals ";
  
$bodytext .="<b>bold</b>, <i>italic</i> enzovoorts.";
  
$bodytext .="</p></html>";
  
$subject="Mijn email onderwerp";
  
mail("info@open-t.nl"$subject$bodytext,$headers);
?>
De Content-Type header geeft aan dat het een HTML mail betreft, zodat uw mailclient weet hoe hij weergegeven moet worden. Helaas is de ondersteuning van HTML in veel mail programma's beperkt, met name op het gebied van CSS. Ook hier is het dus zaak uit te proberen hoe het er uit ziet op de mail clients die u wilt ondersteunen.

Verder...

Met email kan natuurlijk veel meer,zoals:
  • Een alternetieve (text) body aanbieden in een HTML mail
  • Attachments toevoegen met binaire inhoud
  • Op afstand controleren of een mail gelezen is
Al deze dingen kunt u leren in onze cursus OT-12 PHP&MySQL.