He said he didn't want a cron job! I'll admit it's the way to go though 🙂
I suppose there is another way you could do it though. You'll need to be getting a fair amount of traffic.
You could have a small function in your index.php, or other frequently visited page, which simply checked to see when the mail was last sent (a db entry, or a file on server).
If the time is more than the set limit (say 4 hours) then the function could run the send mail routines and update the db entry or file to reflect the current time.
You really need to be getting at least one vistor per 1 hour to make this run properly, so i'd only use it as a last resort.
I personally wouldn't recommend it for sending weather updates to mountainers though, but it's something work on 🙂