I think a system where:
on emails a link can be added that says “manage email preferences” and that’ll take the user to a page where they don’t have to log in, and there are three tick boxes: marketing, announcements, transactional - which the customer can choose what to receive.
if the marketing option isn’t selected they won’t receive Bulk emails/actions etc, if the announcements isn’t selected the same(I believe you said you where adding an announcements method)? Etc
but also, in the customer profile when they log in they should be able to update these preferences, but have quick access to them without logging in through the link on the email.