Sist oppdatert: 23.07.2009 - 13.09
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.
Jeg ønsker at alle bugs/feil blir rapportert inn og om du ønsker, kom gjerne med konstruktiv kritikk!
Koden i pastebin: http://norskwebforum.no/pastebin/11053
Nedlastbar: http://nerdvar.com/nyttig/nerdmail_class.zip
Dere har lov til å bruke den til hva dere vil uten å gi meg creds, men dere har ikke lov til å oppgi koden som egen
DOKUMENTASJON
Hent inn klassen og sett standard variabler:
- Kode: Merk alt
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
- Kode: Merk alt
$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).
- Kode: Merk alt
$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 = "<html><body><h1>Din klient støtter HTML!</h1>\n\n<p>Så herlig, da kan vi jo legge til linker og bilder og lage en kul epost som du mottar</p>
<img src=\"http://norskwebforum.no/styles/prosilver/imageset/logo_nwf.gif\" alt=\"NWF\" />
<p>Kos deg!</p></body></html>";
Legg ved noen vedlegg (attachments) og endre noen headere:
- Kode: Merk alt
$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:
- Kode: Merk alt
$mail->send(); // Returnerer true / false
Tillegsfunksjoner:
- Kode: Merk alt
$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 */
