login  Naam:   Wachtwoord: 
Registreer je!
 Forum

automatische mail als event plaatsvindt

Offline Gust - 24/11/2012 18:02
Avatar van GustMySQL interesse een hele tijd geleden ben ik deze topic gestart. Maar aangezien ik nog geen oplossing heb gevonden en de topic intussen gesloten is, wil ik hier verdergaan met wat ik nu heb.

Ik heb dus een uitgebreid agendasysteem waarbij bezoekers een activiteit kunnen plaatsen. Zodra de datum is voorbijgestreeft verdwijnt hij uit de agenda en wordt in een archief geplaatst.

Nu zou ik dus willen dat de bezoeker die een activiteit plaatst, een paar dagen voor de activiteit plaatsvindt een email krijgt, waarin staat dat de activiteit plaats gaat vinden. Dit zou gebeuren vanuit een cronjob.

Deze cronjob is een apart bestand en ziet er tot nu toe als volgt uit:
  1. <?php
  2. $username = "geheim";
  3. $password = "geheim";
  4. $host="localhost";
  5. $dbnaam="geheim";
  6. $fout = "FOUT: openen database mislukt";
  7.  
  8. $db = mysql_connect($host, $username, $password) or die (mysql_error());
  9. mysql_select_db($dbnaam, $db) or die (mysql_error());
  10.  
  11. // alle activititeiten ophalen die ouder zijn dan 3 dagen vanaf toevoegen.
  12. $query = "SELECT id, naam, email FROM activiteiten WHERE DATE_SUB(NOW(),INTERVAL 3 DAY) <= aangemaakt AND reminder = 0";
  13. $result = mysql_query($query) or die (mysql_error());
  14.  
  15. //alle activiteiten die van toepassing zijn verwerken.
  16. while ($row = mysql_fetch_assoc($result))
  17. {
  18. // elke activiteit updaten zodat het systeem weet van welke activiteit reeds een mail gestuurd is.
  19. $query2 = "UPDATE activiteiten SET reminder = 1 WHERE id = ".$row['id'];
  20. $result2 = mysql_query($query2) or die (mysql_error());
  21.  
  22. // mail aanmaken en versturen (jouw code dus)
  23. }
  24.  
  25. //Datum van vandaag
  26. $datum_nu = date("Y-m-d");
  27.  
  28. //Datum van 2 dagen voor het evenement
  29. $datum_plus = date("Y-m-d", strtotime(date("Y-m-d", strtotime($query['datum'])) . " -2 days"));
  30.  
  31. //Datums vergelijken
  32. if($datum_nu == $datum_plus)
  33. {
  34.  
  35. $headers = 'Van: Folk in Limburg <noreply@folkinlimburg.be>' . "\r\n";
  36. $to = $query['emailadres'];
  37. $subject = 'uw ingestuurde activiteit';
  38. $mail_body = "
  39. <html>
  40. <head>
  41. <title>" . $titel . "</title>
  42. </head>
  43. <body>
  44. <img src=\"http://www.folkinlimburg.be/images/folkinlimburg.png\" /><br>
  45. Beste " . $voornaam . ",
  46. <br><br>
  47. <p>Een tijdje geleden hebt u op de website van Folk in Limburg <a href=\"http://www.folkinlimburg.be/agenda/beschrijving.php?id=".$id."\">deze activiteit</a> toegevoegd:<br>
  48. <table width=\"355\" border=\"0\">
  49. <tr>
  50. <td height=\"25\" bgcolor=\"#FFFFCC\">activiteit:</td>
  51. <td height=\"25\" bgcolor=\"#FFFFCC\"><b>" . $titel . "</b></td>
  52. </tr>
  53. <tr>
  54. <td height=\"25\" bgcolor=\"#FFFFCC\">datum:</td>
  55. <td height=\"25\" bgcolor=\"#FFFFCC\"><b>" . $datum . "</b></td>
  56. </tr>
  57. <tr>
  58. <td height=\"25\" bgcolor=\"#FFFFCC\">om:</td>
  59. <td height=\"25\" bgcolor=\"#FFFFCC\"><b>" . $uur . "</b></td>
  60. </tr>
  61. </table>
  62.  
  63. <br><br>
  64.  
  65. Wij willen u hartelijk bedanken voor het plaatsen van deze activiteit, die over 2 dagen plaatsvindt. Moest u intussen nieuwe activiteiten willen toevoegen, dan kan dat rechtstreeks via <a href=\"http://www.folkinlimburg.be/agenda/toevoegen.php\">deze link</a><br><br>
  66. Met vriendelijke groeten,<br>
  67. <a href=\"http://www.folkinlimburg.be\">Folk in Limburg</a><br><br><br>
  68. (dit is een automatisch gestuurd bericht, gelieve hierop niet te antwoorden.)
  69. </body>
  70. </html>
  71. ";
  72.  
  73. $actie = mail($to, $subject, $mail_body, $headers);
  74.  
  75. if(!$actie)
  76. {
  77. echo 'FOUT BIJ VERZENDEN';
  78. }
  79.  
  80. }
  81. ?>


Tot nu toe krijg ik alleen een overzicht van de status van de cronjob, die ik in het controlepaneel heb ingesteld. Maar geen email  

2 antwoorden

Gesponsorde links
Offline marten - 25/11/2012 09:11
Avatar van marten Beheerder Je headers staan fout. In ieder geval is het al geen van: maar from: Verder dien je meer headers te specificeren.

  1. $headers = "From: {$from}\n";
  2. $headers .= "MIME-Version: 1.0\n";
  3. $headers .= "Content-Type: text/html; charset=UTF-8;\n";
  4. $headers .= "X-Mailer: PHP/" . phpversion() . "\n";


Zo verstuur ik ze altijd.
Offline Sitebase - 03/12/2012 09:22
Avatar van Sitebase PHP expert Je moet heel die blok code vanaf lijn 25 in je while loop plaatsen.
Vervolgens vervang je $query['emailadres'] door $row['emailadres'] en dan zou het moeten werken.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s