Tema: Diverse; sjanger: Prosjekter
Skrevet av Stig Magnus Halvorsen den 18. juni 2009 kl 15:21:52; Kommentarer: 3
nerdMail v1.0.2 - mailclass with attachments
Ettersom jeg ved gjentatte ganger har måtte sende epost med mine PHP-skripts, så bestemte jeg meg til slutt for å skrive en klasse for å gjøre hverdagen enklere. Jeg skrev den i hovedsak for å selv spare tid, men jeg tenkte også på andre da jeg skrev klassen; at den er brukervennlig. Klassen er ikke kun for å sende vanlige tekstepost, du kan også sende eposten som html, eller sende både en tekst- og htmlversjon. Den har også støtte for alle typer vedlegg, flere mottakere (også cc og bcc), en kraftig emailverifisering, anti-injectionfunksjon og det er enkelt å legge til/modifisere headere i eposten.
Etter å ha blitt fornøyd med førsteutkastet, så spurte jeg om tilbakemelding på Norsk Webforum. Der fikk jeg god konstruktiv kritikk og etter flere endringer virket det som koden er stabil og brukerne fornøyde. Så da lanserte jeg den som versjon 1.0.
Trykk her for å se kildekoden
Trykk her for å laste ned kildekoden (zip)
Alle har lov til å bruke den til hva dere vil uten å gi meg creds, men dere har ikke lov til å oppgi koden som egen. Det betyr at den er OpenSource, at dere kan bruke den i alle slags prosjekter og hva en nå dere måtte ønske å benytte den til. Unntaket er at dere ikke har lov til å si at dere skrev den originale klassen (blir litt drøyt å kalle det kjernen) og dere har ikke lov til å selge koden individuelt. Altså dere kan selge systemer som benytter klassen, men å selge selve klassen som et eget produkt er forbudt.
Ved å bruke koden godtar du at jeg ikke tar noe ansvar for og gir ingen garanti for andres eller egen bruk av koden. Jeg tar ikke på meg noe ansvar og skal ikke bli beskyldt om koden på et mystisk vis skal skape noen form for skade, feilmeldinger eller om den simpelthen ikke virker. Dette sier jeg ikke fordi koden er farlig, men kun for å fraskrive meg alt ansvar.
Hent inn klassen og sett standard variabler
require_once("mail_class.php");
$mail = new nerdMail;
$mail->subject = "The New PHP Mail"; // Meldingens emne, ikke obligatorisk
$mail->sender = "Nerdvar <no-reply@nerdvar.com>"; // Avsender, kan også kun være en epostadresse
$mail->returnPath = "bounce@nerdvar.com"; // Ikke obligatorisk, lurt for å ikke bli kategorisert som spam
Legg til mottakere
$mail->addMail("to", "enfyr@domene.com"); // Vanlig mottaker
$mail->addMail("to", "enannenfyr@domene.com", true); // Enda en mottaker med epostverifisering, returnerer false om ugyldig
$mail->addMail("cc", "kopi@domene.com"); // Legg til en kopimottaker
$mail->addMail("bcc", "blindkopi@domene.com", true); // Verifiser epost og legg til en blindkopimottaker, returnerer false om ugyldig
Definer epost body (meldingen), html eller text må defineres (kan også være begge).
$mail->text = "Hei\n\nAt du ser dette betyr at din epostklient ikke støtter eller har deaktivert html. Det var synd!\n\nJaja, du får ihvertfall eposten i klartekst og kanskje en link til online-versjon\n\nHils!";
$mail->html = "Din klient støtter HTML! Her kan du legge inn alle mulige HTML-koder...";
Legg ved noen vedlegg (attachments) og endre noen headere:
$mail->attach("mockup.jpg", "image/jpeg");
$mail->attach("http://no.php.net/images/php.gif", "image/gif");
$mail->attach("myapp/readme.txt"); // Om du ikke definerer metatype (filtype) blir den satt til application/octet-stream
$mail->attach("myapp/readmetoo.txt", "text/plain", BIT7); // Om du ønsker BIT7-enkoding på attachment istede for base64, unormalt
/* Har valgt å bruke url istede for noe annet, da fungerer den på både å legge til nyopplasta filer og eksisterene filer */
//Modifiser noen headere
$mail->addHeader("Message-Id", "kodenr@mittdomene.com");
$mail->addHeader("List-Unsubscribe: <http://dittdomene.com/unsubscribe.php>");
/* Denne funskjonen vil også overskrive de standard headerne som blir satt av klassen om du definerer de med addHeader
Standard definerte headere er: mime-version, content-type, from, reply-to, cc, bcc, to (De fem siste blir satt av tidligere nevnte funskjoner) */
Send eposten:
$mail->send(); // Returnerer true / false
Tilleggsfunksjoner
$mail->parseMail($email);
/* Kan også brukes slik nerdMail::parseMail($email) (om du ikke har satt $mail)
Den tar både "dittnavn@domene.no" og "Ditt Navn <dittnavn@domene.no>"
Den sjekker eposten med regExp og sjekker om mailserveren "domene.no" eksisterer
Fin til å bruke feks i et kontaksskjema hvor avsender skriver inn sin epostadresse */
$mail->antiInjection($field);
/* De som har erfaring med å sende mail fra PHP vet at det er en fare ved iputfelter som
inkluderes i mailen. Om man ikke sjekker dette kan andre bruke ditt simple epostskjema til
å spamme andre. Denne funskjonen sjekker om noen prøver dette. Burde settes på
input subject, input eposter og evt. input headerinformasjon. Kan også brukes
slik: nerdMail::antiInjection($email) (om du ikke har satt $mail)
Gir true hvis injectionforsøk blir oppdaget */