The solution is to use a cron, or service (depending upon server environment).
Most control panels have an interface for crons that will detail what each input means. But in general, your specific cron would look something like:
Min Hour Day Month Week Path
0 /path/to/your/script.php
What this would do is at the top of each our, on each day, of each week, of each month your script located at "/path/to/your/script.php" would be executed by the system.
Now, as far as keeping track of who has already gotten an email is up to you.