Goede avond,


Wat ik graag wil maken is een mail schedule waarin ik kan aangeven of een mail voor de datum moet worden verzonden of na een datum.
Laten we het eve houden op 48uur na een datum.
Ik maak een database aan waarin de emailadressen staan en een datum.
Wat is nu een manier om een email automatisch te verzenden?
In geval van Linux/Unix: Cronjob
In geval van Windows: Geplande taak

Die draai je dan elke minuut en dan kijk je met een script welke er gelijk is of ouder dan de huidige datum en tijd.

Op die manier plan ik ook nieuwsberichten op mijn site in op datum. Uiteraard is het verstandig om bij te houden welke mails er verstuurd zijn met een 'vlaggetje'. Voornamelijk gebruik ik het plansysteem om automatisch te Tweeten .
Hi Arien,

Is het ook mogelijk om dit met PHP en SQL te doen?
Het uitvoeren op tijd? Ja, maar dan moet er wel iemand/iets op dat moment aanwezig zijn. Dat gaat niet automatisch met PHP,en is daarom ook niet handig.

En je moet zelf een systeem bouwen waarin je de acties inplant.

Cronjobs lijken mij het beste.
ik wil een mail sturen 2 dagen nadat een order is verzonden.
Het emailadres en de datum van verzending staan in mijn database.
Maak ik dan een cronjob dat hij 1x per dag het php script uitvoert waarin in de database gekeken word welke emailadressen voor die datum gelden?
Je zou ook kunnen opteren voor meerdere crons. Een voor een soort van "triggersysteem" die op gezette tijden controleert of ingeplande taken uitgevoerd moeten worden. Een van die taken zou dus het klaarzetten van kant-en-klare mailtjes in een soort mail-wachtrij (queue) kunnen zijn. Dan zou je een andere cron kunnen hebben die als enkele taak heeft alle onverzonden e-mailberichten te versturen die in deze wachtrij staan.

Dit is misschien overcomplex voor een simpel systeem, maar op het moment dat je systeem verder uitgebreid wordt lijkt mij dit een betere "separation of concerns". Je hebt dan ook een uniforme manier om mail te versturen (je gooit alles in de queue) en je kunt het (veelvuldig) versturen van bulkmail verder finetunen in stukken, je hebt hier door middel van deze queue + de cron de volledige controle over.

Daarbij is het ook van groot belang dat je deze mail op de juiste manier verstuurt. Ik hoop dat je van een library zoals PHPMailer gebruik maakt zodat je rechtstreeks met de mailserver kunt communiceren via SMTP, en niet dat je simpelweg mail() in een loopje aanroept. Dit is nogal inefficiënt zoals wordt aangehaald in de documentatie:
It is worth noting that the mail() function is not suitable for larger volumes of email in a loop. This function opens and closes an SMTP socket for each email, which is not very efficient.

Reageren