For my company I wrote a script using MIME::Lite or, for simple mails, just sendmail. Maybe not the most efficient solution, but it works.
The script is supposed to run on virtually any server with perl and SQL, so it does get used on webhosting servers that we didn't configure ourselves. Some of those don't even let us see the error logs.
Some servers have introduced certain restrictions to prevent sp4mming and d.o.s. attacks:
One server has a limit on how many mails can be sent by scripts per day. Another one does not allow more than a certain amount of mails per time - the helpdesk man told me I should slow down the script so it will not send more than one mail per second. Well, I did slow it down, but not that much. I also had to introduce a not very elegant way of checking sendmail's error output into another logfile. Maybe things the Bulkmail module would have done for me.
But if you don't control the server, you have to take a second and third look at things and you can't take anything for granted. That's not nice, but it was also something to learn for future projects.