Spam se considera el envío de e-mails (no necesariamente publicitarios) que no han sido solicitados previamente por el/los destinatarios. Sea uno o mil. Y yo estoy muy en contra del spam.
En todo caso,
para crear un newsletter debes utilizar, por ejemplo, php y mysql. En la base de datos guardas, precisamente, los datos de cada usuario y si quiere recibir la newsletter o no. Luego, con PHP puedes enviar correos a todos los usuarios de la base de datos que quieran recibir el newsletter.
Si no tienes conocimientos de php y mysql, te recomiendo que te pases por
desarrolloweb y
w3schools.
Saludos.