A hosted solution will probably be easier for the actual sending of the SMS messages.
I found this http://smseverywhere.com/developers.htm which is an API which you can use to send SMS messages in bulk from our own application.
As for the sending of email, if it’s all internal emails I would setup Distribution lists, and build a web based self service site which users can use to add or remove them selves from the distribution lists.
If you need to be able to send to outside users as well I’d recommend a system such as Lyris (I’ve used it which is why I recommend it). We used it to send a couple of million messages per day.