Don't build this yourself.
You can get the best of both worlds by combining MailChimp with a webservice for sending mass programmatically-generated emails.
If you intend to manually, regularly send people stuff, use a newsletter campaign service like MailChimp. They'll take care of your desired features for you. You can create a new "list" (eg. people you want to email) and then place a signup form for that list in your page. When people enter their email address, they'll be signed up via a confirmation flow using MailChimp (where they receive an email and need to confirm their signup, etc). MailChimp will also handle ending their subscription when they want to, and you'll have a centralised, manageable list of people who have signed up, including analytics and personal details when/if you want.
And then you just go use MailChimp to send campaigns, with all the features there that you want like guarantees that emails arrive, blacklist filtering, etc.
Having said that, MailChimp isn't ideal for automated, programmatically sent emails as it's really intended for newsletter campaigns. You could use the MailChimp API, but that might be a lot of work. So what I recommend you do is use MailChimp for list management (signups, subscriptions, etc) and a web service like Postmark or Elastic Email for actually sending emails to people. These guys charge you a fraction of a cent per email sent, and you connect to them using an API. Then you just tell them who you want to send an email to and they handle all the underlying technical stuff to make sure your email actually arrives, according to the rules, using the correct DKIM settings, etc.