Well the mailing list part shouldn't be that hard. You just need to get the correct users and assign them to a list in your database. A many-to-many relationship should do.
However the email/newsletter creation is probably the biggest part of this all. You can for example use a tool like https://github.com/voidlabs/mosaico or https://github.com/unlayer/react-email-editor. You just need to save that in the database and you're good to go for sending emails!
However tools like MailChimp are designed for this. You might as well give your users an account here. You can also use their API to build templates. Note that you need to build your own frontend for this: https://developer.mailchimp.com/documentation/mailchimp/reference/templates/
For sending emails in general I would highly recommend to use a queue ;)