Use a profile form and constituent attributes. The users will be able to opt in or out on the profile form, and the information will go into their constituent record on the attributes tab for you to query on. This will require them to create a login, but it'll give them the choice for which types of messages they want to receive.

Profile Form
How to add attributes to a profile form