Denali/Mt. McKinley and Brown Bear Software logo
Calcium Documentation - Controlling the Email Reminder Process
Horizontal Line

Because the Calcium script runs only in response to a user action, it can't periodically and predictably check for and send event reminders. So, Email Reminders are handled by a process that runs separately from the Calcium script.

This is done by another script, called "SendReminders". It can be run in two different fashions:

  • As a daemon which runs forever, periodically checking for and sending reminders
  • As a program which checks once, sends reminders, and exits.

If Calcium is running on any sort of Unix/Linux/FreeBSD/Mac OS X system, you can start and stop the Reminder process in 'daemon' mode using the Calcium interface. Follow the "Email Reminder Process" link on the System Administration page. You'll see a menu that lets you specify how often to check for reminders, and a button to start or stop the process. Once you start it, the SendReminder process will run "forever", sleeping most of the time, but waking up every N minutes to see if any reminders need to be sent.

On Microsoft Windows platforms, controlling the SendReminder process via the Calcium admin page is not currently supported. On Windows (or any other platform), you can run the SendReminder script externally from a command line. It can be run in either mode - you can have it check for and send reminders once and exit, or run forever (or until you stop it) as a daemon. To run it as a daemon, specify the number of minutes to sleep between checks, using the -i flag ('i' stands for 'interval'):

        c:\home\www\cgi-bin\CalciumDir> \perl\bin\perl.exe SendReminders -i 10
This will check for reminders every 10 minutes.
To check just once, run it without any arguments, e.g.:
        c:\home\www\cgi-bin\CalciumDir> \perl\bin\perl.exe SendReminders

A good solution is to use Unix 'cron' or the Windows Scheduler to run the SendReminder script at predetermined intervals, using the no argument form. An example unix crontab entry might be something like:

    0,10,20,30,40,50 * * * * /home/httpd/cgi-bin/CalciumDir/SendReminders
which would check every 10 minutes. Make sure you use the crontab of the user the web server runs as, so you don't have file permission problems.

For more information on running SendReminders on Microsoft Windows, please see SendReminders via the Windows Scheduler (recommended) or SendReminders as a Windows Service (rather complicated.)

Note: the SendReminder script needs to know the path to your Calcium installation. At the top, it has a line that looks something like this:

       BEGIN {$Defines::calendar_root = '.';
If you have trouble getting the script to run, you should try changing the path inside the quotes to the full path to your Calcium installation directory. For example:
       BEGIN {$Defines::calendar_root = '/usr/local/CalciumDir';
or maybe:
       BEGIN {$Defines::calendar_root = '/home/www/cgi-bin/CalciumDir';
or possibly something like:
       BEGIN {$Defines::calendar_root = 'c:\www-root\cgi-bin\CalciumDir';