A couple of years ago I was writing a program to do just this, send out the monthly news letter for the ecommerce company I was working for. I wrote it in C and linked to libesmtp, it was a very easy task, perhaps you should look at doing something like this? The application I wrote read a file that had the content of the email and another file with a delimited list of names and email addresses it would then use substitution to replace keywords in the email and send it to the address, it took about a week to write and handled about 500K of addresses, it also worked in such a way that it didn't force too much load on server itself. I also had to mess about with sendmail to reduce the timeout value for none responsive addresses.
Failing that an easier solution could be to use mailman and create a mailing list that can only be posted too by the admin, this is a webbased frontend but the backend isn't.
HTH
Ben