So this is the way I did it (for a long time with a website that had thousands of users)
This is totally a hack, but it works.
Build a page that sends a single email and mark that user as "sent" in the db, eg (sent=1)
Select the next user that is not "sent" (eg sent=0)
Put a meta refresh tag to refresh every minute on the page , open a browser, launch the page and let it run for an hour and a half or even all night...
In the am, clear the db of (set all users sent=0)
(I used to have my scripts run all night... )