PHP Mail class

ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

  • Mijn eigen mailer classe. Hieronder vindt je hoe je het moet gebruiken!

    We beginnen met het aanroepen en registeren van de classe.

    PHP Source Code

    1. // Include class
    2. include("Path van het bestand");
    3. // Register classe
    4. $mailer = new Mailer();

    Daarna beginnen we met een nieuwe mail. Hieronder alle tussen opties voor we gaan verzenden

    PHP Source Code

    1. // Waar de mail vandaan moet komen
    2. $Mailer->SetFrom("[email protected]");
    3. // Welke mail wordt gebruikt wanneer ze drukken op beantwoord.
    4. $Mailer->setReply("een naam, zoals bedrijf", "[email protected]");
    5. // Onderwep van de mail
    6. $Mailer->setSubject("Test mail");
    7. // De ontvanger van de mail
    8. $Mailer->setReceiver("[email protected]");
    9. // Geef aan met een boolean of het in html is of plain en daarnaa zet de bericht van de mail
    10. $Mailer->setMessage(true, "Bericht met html omdat <br/> boolean op true staat");
    Laat alles zien
    Nu gaan we de mail versturen

    PHP Source Code

    1. // Verstuur de mail
    2. $Mailer->sendMail();
    En als je een return message wil kun je het volgende gebruiken:

    PHP Source Code

    1. // Je kunt 3 returns krijgen:
    2. // 0: failed
    3. // 1: success
    4. // 2: een onbekende error heeft plaats gevonden
    5. // Zo krijg je de return, vergeet niet een echo van te maken of een variable te gebruiken voor het opslaan van de return :)
    6. $returncode = $Mailer->getReturn();

    Hopelijk werkt het bij iedereen en is mijn uitleg duidelijk.

    Met vriendelijke groeten,
    T.Nijborg
    Bestanden
    • mailer.zip

      application/zip, 1.41 kB (523 downloads)

    2,300 keer bekeken

Reacties 5

  • FangorN -

    Ik wil niet overkritisch klinken, maar als ik deze class vlug bekijk vallen mij de volgende dingen op:
    - mailheaders als To, Cc, Bcc mogen herhaald worden, ik zou dan ook verwachten dat $to, $cc en $bcc arrays zijn
    - de klasse ondersteunt geen multipart MIME mail? je kunt dus ook geen attachments of inline images meesturen (denk aan nieuwsbrieven / PDF documenten of anderszins)
    - de klasse maakt op het laagste niveau nog steeds gebruik van de mail() functie, en maakt geen verbinding met je SMTP server via sockets; ik weet niet of deze klasse daardoor geschikt is voor bulk mail, ik denk dat je het als volgt kunt vergelijken: een mail()-aanroep werkt bij mijn weten als volgt:
    1. maak verbinding met mailserver
    2. verstuur mail
    3. verbreek verbinding
    Als je dit dus voor 50 mailtjes doet wordt er dus ook 50x een verbinding gemaakt en verbroken.

    Dit in tegenstelling tot een oplossing die rechtstreeks met je mailserver praat. Deze maakt 1x een verbinding, verstuurt dan alle mailtjes en hangt dan (1x) op.

    - er zit ook niet echt een functionaliteit in waarbij mailtemplates dynamisch gevuld kunnen worden; dit is weer handig voor gepersonificeerde mailtjes (denk bijvoorbeeld aan headers: beste Henk, Piet, Klaas); hoe cool zou het zijn als je met een loopje deze mailbody's makkelijk kunt genereren (denk aan nieuwsbrief ofzo)? Jeweetwel, automatisering.

    - er wordt niet gekeken naar de return-value van de mail() aanroep, er wordt simpelweg 1 geretourneerd :/

    Een (naar mijn mening) hele handige voorziening is dat je in je mail-functionaliteit een instelling integreert die aangeeft of je je op een TEST/ONTWIKKEL omgeving bevindt.

    Je zou dan namelijk wat kunnen goochelen met ontvangadressen zodat je mailfunctionalteit kunt TESTEN ZONDER DAT DEZE OOK DAADWERKELIJK NAAR JE KLANTEN WORDT VERSTUURD. Heel vaak heb ik te maken gehad dat mailfunctionaliteit "op scherp" stond: verstuur je mail, vliegt het de buitenwereld in en komen testmailtjes terecht bij de mensen waar het toch echt niet voor bestemd is. En tegelijkertijd kun je zelf niets testen op mailgebied.

    Laat er nu een handige voorziening in mailheaders zijn. Alle headers die beginnen met "X-" worden genegeerd.

    Je zou dus het volgende kunnen doen:

    ALS TESTMODUS
    -- schrijf alle To, Cc en Bcc entries om naar X-To, X-Cc en X-Bcc
    -- maak alle To, Cc en Bcc entries leeg, en vul in To developer adresssen in
    ANDERS
    -- stuur eventueel nog een Bcc naar een mailmonitor, zodat je bewijs hebt dat een mail is verstuurd
    EINDE ALS

    Als je dus in test modus draait, kun je dus onbezorgd mailen, en kun je in je X-To, X-Cc en X-Bcc headers zien wie de eigenlijke ontvanger had moeten zijn.

  • Frenzo.Brouwer -

    Ik heb m ook gedownload! Zal m ook uitbreiden en zeker gaan gebruiken! Dankje

  • ismail123 -

    Ik kan overal een int neerzetten en dit wordt gewoon goedgekeurd.

    Misschien is het handig om nuttige informatie terug te geven indien de data die wordt meegegeven niet voldoet aan wat de code verwacht
    if(!$this->isMail($sendFrom)){ throw new Exception('This is not an e-mail formatted string');}

    Ik heb liever dat je constanten gebruikt in plaats van strings voor de $Mailer->getReturn(); functie.

    Zoals $Mailer->getReturn(Mailer::RETURN_TEXT); of $Mailer->getReturn(Mailer::RETURN_CODE);

    Wat ook handig is is phpdoc's
    phpdoc.org/docs/latest/getting…set-of-documentation.html

    Zodat ik in mijn editor documentatie over de functie te zien krijg

    Ik heb nog meer opmerkingen maar ik denk dat je hier nog wel even zoet mee bent :)

    • T.Nijborg -

      Het is gewoon een simpel download script haha, er zit sinds deze nieuwste versie ook een check in of de mail echt is. Voor nu vind ik het prima, misschien dat ik hem aankomende week zal uitbreiden.

    • ismail123 -

      Ahjoh als je houdt van verbeteren (wat ik graag doe) is het een leuke klus om professio eler uit te zien. Maar natuurlijk niet verplicht, doe wat je het liefst doet:) En goedbezig!