Automatisch email verzenden op verjaardag
Kheb een vraag/probleem. Ik heb een scriptje gemaakt voor een soort verjaardagskalender/lijstje. Dit werkt prima, maar....
Ik wil ook dat op de dag van de verjaardag een automatisch mailtje wordt verzonden naar de persoon. Ik heb al wat gemaakt, maar het werkt niet.
Mijn vraag aan jullie..... waar zit de fout of is het zo uberhaupt wel mogelijk.
Alvast bedankt voor de info!!!!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
blablabla......
// maximaal aantal te tonen jarigen
$caleventslimit = intval( $params->get( 'count', 5 ) );
$aVandaag = getdate();
$maand = $aVandaag['mon'];
$dag = $aVandaag['mday'];
// Deze SQL haalt uit de verjaardagen tebal op:
// datum van verjaardag, naam, en de leeftijd
$sqlcal = "select naam, datum, datum_overlijden, naam_baas, email, " .
"(year(curdate()) - year(datum)) as leeftijd, " .
"concat(dayofmonth(datum),'/',month(datum)) as jarigop " .
"from $table " .
"where dayofyear(datum) >= dayofyear(curdate()) " .
" order by month(datum),dayofmonth(datum) asc limit $caleventslimit";
// query uitvoeren
$database->setQuery($sqlcal);
$rows = $database->loadObjectList();
if ($rows === null) {
$content = "Geen jarigen deze maand";
return;
}
// resultaat opbouwen
$content ="<font size=1><b>Komende verjaardagen</b></font><br/><br/>";
$content .= "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
foreach($rows as $row) {
$naam = stripslashes($row->naam);
$datum = stripslashes($row->datum);
$leeftijd = stripslashes($row->leeftijd);
$jarigop = stripslashes($row->jarigop);
$datum_overlijden = stripslashes($row->datum_overlijden);
$naam_baas = stripslashes($row->naam_baas);
$email = stripslashes($row->email);
if($datum_overlijden == "")
{
$content .= "<tr><td width=5 valign=top align=left>" .
"<font size=1><b>" . $jarigop . "</b> </font></td>" .
"<td align=left valign=top>" .
"<font size=1>" . $naam . " (" . $leeftijd . ")</font></td></tr>";
}
else
{
$content .= "";
}}
$content .="</table>";
//email sturen
if ($datum = $aVandaag);
mail($email,$subject,$message,$headers);
blablabla
// maximaal aantal te tonen jarigen
$caleventslimit = intval( $params->get( 'count', 5 ) );
$aVandaag = getdate();
$maand = $aVandaag['mon'];
$dag = $aVandaag['mday'];
// Deze SQL haalt uit de verjaardagen tebal op:
// datum van verjaardag, naam, en de leeftijd
$sqlcal = "select naam, datum, datum_overlijden, naam_baas, email, " .
"(year(curdate()) - year(datum)) as leeftijd, " .
"concat(dayofmonth(datum),'/',month(datum)) as jarigop " .
"from $table " .
"where dayofyear(datum) >= dayofyear(curdate()) " .
" order by month(datum),dayofmonth(datum) asc limit $caleventslimit";
// query uitvoeren
$database->setQuery($sqlcal);
$rows = $database->loadObjectList();
if ($rows === null) {
$content = "Geen jarigen deze maand";
return;
}
// resultaat opbouwen
$content ="<font size=1><b>Komende verjaardagen</b></font><br/><br/>";
$content .= "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
foreach($rows as $row) {
$naam = stripslashes($row->naam);
$datum = stripslashes($row->datum);
$leeftijd = stripslashes($row->leeftijd);
$jarigop = stripslashes($row->jarigop);
$datum_overlijden = stripslashes($row->datum_overlijden);
$naam_baas = stripslashes($row->naam_baas);
$email = stripslashes($row->email);
if($datum_overlijden == "")
{
$content .= "<tr><td width=5 valign=top align=left>" .
"<font size=1><b>" . $jarigop . "</b> </font></td>" .
"<td align=left valign=top>" .
"<font size=1>" . $naam . " (" . $leeftijd . ")</font></td></tr>";
}
else
{
$content .= "";
}}
$content .="</table>";
//email sturen
if ($datum = $aVandaag);
mail($email,$subject,$message,$headers);
blablabla
de fout?
de fout is dat je niet zegt wat er mis gaat en geen fout laat zien
Quote:
Wát werkt er niet? En wat werkt er wél? Welke foutmeldingen krijg je? (nadat je die op het scherm hebt gezet!)maar het werkt niet
etc. etc.
De fout is dat er geen email wordt verzonden.
Inderdaad, op de manier die jij hem had is de waarde datum altijd de waarde aVandaag ;-)
Merci! Ik zal testen of het werkt.
Ik neem aan dat het script vanuit een cron-job of iets vergelijkbaars wordt aangeroepen? Anders ben je wel afhankelijk van een handmatige handeling om het script op te starten lijkt mij.
als iemand een nieuwe verjaardag plaatst, dan komt deze automatisch er op te staan en als de datum voorbij is, dan verdwijnt deze automatisch.
Vandaar mijn reaktie. :)
Maar door de bovengenoemde script wordt toch automatisch op de dag het email naar de jarige gestuurd???
Als jij of een bezoeker de pagina met dat script niet opent, wordt er m.i. geen mail gestuurd.
Nou helaas het script verstuurd geen e-mail. Volgens mij is
fout, want $aVandaag verwijst eigenlijk niet naar de huidge datum op dat moment. Weet iemand welke code dat wel is?
Alvast bedankt!
Hoe zorg je er voor dat je script ook daadwerkelijk uitgevoerd wordt? Stel nu dat niemand je pagina opvraagt op een dag dat er iemand jarig is?
Elke dag bezoeken mensen mijn site, dus de kans is klein dat het sprit niet opgevraagd wordt. Maar is er dan een "makkelijke" manier om het automatisch te laten draaien?
SanThe: ik heb gekeken bij date(), maar moet ik persé iets tussen de haakjes zetten?
Je zou een cronjob kunnen maken die gewoon om drie uur s'nachts dat script gaat runnen.
weet je een link waar ik hier informatie over kan vinden?
Jan Koehoorn schreef op 28.12.2006 21:46:
Hoe zorg je er voor dat je script ook daadwerkelijk uitgevoerd wordt? Stel nu dat niemand je pagina opvraagt op een dag dat er iemand jarig is?
Ik was ook al zoiets aan het denken...
Ik had overtijd ook een vraag over cronjobs. Het probleem was gewoon dat je script het wel doet, maar dat de pagina niet wordt aangeroepen..
EDIT:
hier is de link:)
http://www.phphulp.nl/forum/showtopic.php?cat=1&id=24229
EDIT2:
Mijn webserver is tijdelijk offline, ik hoop dat hij snel terug on komt. Als hij terug online is kan je die afbeelding die erop staat over de cron bekijken:)
Gewijzigd op 01/01/1970 01:00:00 door Jens V
seb schreef op 28.12.2006 21:31:
Let op het foutieve gebruik van de edele puntkomma ;-)Verder lijkt het me het meest praktisch om een (extra) SQL-query te maken waarmee je alle jarigen van vandaag opvraagt. Die kun je dan mail sturen zonder de datum te hoeven controleren, want met die array-constructie van $aVandaag moet je behoorlijk gaan prutsen om een datumvergelijking te kunnen uitvoeren.
En (zoals al eerder gezegd) zou dit dus in een cronjob moeten, omdat je anders de kans loopt dat iemand óf geen mail ontvangt, óf een paar honderd (afhankelijk van het aantal bezoekers).
O ja, en zet je mail-commando binnen de foreach, anders verstuurt 'ie alleen mail naar de laatste persoon in je lijst.
Gewijzigd op 01/01/1970 01:00:00 door Willem vp