Hoople - 4:08 am on Jan 8, 2014 (gmt 0)
I would use Mailman in cPanel if your host offers it. You get the advantage of bounce management and allow the user to opt out on their own.
Mailman also has the ability to work with your host's maximum emails per hour and queue those that exceed their limit. A script will run all emails and the host's email server will send all up to the limit and drop the remainder. Resending the remainder may be further hampered by short term hold off period imposed (in reaction to the mass mail) or may have a hard block that requires you to explain why it should be undone.
Doing it your way, while it is very crafty leaves the aforementioned maintenance tasks to another set of manual tasks :-)