Billede- og mail-funktioner
Julen står for døren, og så er det sæson for afsendelse af julekort til alle dem man heller ikke i år nåede at snakke med. Den slags gørest nemmest elektronisk, og postkort-funktionalitet er nemt at implementere i PHP. En af styrkerne ved PHP som webscriptingsprog er den store mængde funktionalitet, man får foræret ganske gratis.
Her i eksemplet benytter vi billedbehandling- og mail-funktioner, og vi stifter bekendtskab med en klasse, som gør det nemt at sende e-mails med vedhæftede filer, uden at skulle anvende det lidt kringlede IMAP-bibliotek.
Først præsenterer vi brugeren for en side, hvor der kan vælges et billede og skrives en lille tekst, samt skrives en e-mail-adresse til modtageren. Lad os sige, at formularen, der afsendes til scriptet, indeholder filnavnet på det billede, der skal benyttes, gemt i parameteren $BILLEDFIL, teksten, der skal stå på kortet ligger i parameteren $TEKST, og modtagerens mailadresse i parameteren $MODTAGER.
Posten er på vej
Scriptet er således indrettet: Først importerer vi klassen MIME.class, som håndterer den mail, vi skal sende afsted senere i scriptet. Den kan downloades fra websitet PHP Builder.
<?php
include "MIME.class";
$im = @ImageCreateFromJPEG ($BILLEDFIL);
/* Vi prøver at indlæse filen */
if (!$im) {
/* Hov, noget gik galt */
die("Hovsa, kunne ikke åbne billedfilen.");
}
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageTTFText ($im, 20, 0, 10, 20, $tc,
"arial.ttf", $TEKST);
Imagejpeg($im,"temp.jpg",75);
ImageDestroy($im);
$mime = new MIME_mail("postkort@minserver.tld",
$MODTAGER, "En julehilsen!");
$mime->fattach("temp.jpg", "", JPEG, BASE64);
$mime->send_mail();
echo "Posten er på vej!";
?>
Først henter vi billedet ind i variablen $im, og hvis det går galt, sender vi en fejlmeddelelse afsted.
Linien $tc = ImageColorAllocate ($im, 0, 0, 0); definerer en tekstfarve. Her vælger vi RBG-værdien (0,0,0), og det er sort.
Dernæst benyttes funktionen ImageTTFText til at skrive på billedet med. ImageTTFText skriver med truetype-fonte, og her har vi valgt Arial, som vi har kopieret fra C:\WINNT\Fonts, og anbragt i samme mappe som scriptet.
I den næste linie gemmer vi filen under navnet temp.jpg, og frigører billedvariablen $im fra hukommelsen med ImageDestroy.
Så er det blot at benytte funktionerne i MIME-class til at generere og sende vores e-mail afsted med. Den første linie,
$mime = new MIME_mail("postkorttjenesten@minserver.tld", $MODTAGER, "En julehilsen!");
opretter et MIME_mail-objekt, hvor første argument i constructoren er den mail-adresse, som der sendes fra. Det andet argument er modtagerens mailadresse, som vi har modtaget fra formularen på den første side, og det sidste argument er subject-linien i mailen.
Hvis man benytter Windows til at afprøve scripet på, skal man have en mail-server på sin maskine. En lille, nem og gratis mail-server kan downloades fra firmaet Argosoft, og den er god til test-formål.