Il y a deux parties :
- le système de gestion des adresses emails et de ce que tu dois leur envoyer ;
- l’envoi d’emails en tant que tel.
La première partie, c’est souvent un backend adossé à une base de données contenant les adresses email ainsi que certaines données associées. Ces données permettent de filtrer correctement pour orchestrer les envois. Par exemple, tu vas sûrement vouloir associer une adresse email à une date d’inscription à ta newsletter. De cette façon, ton système peut filtrer et sélectionner les bonnes adresses auxquelles il faut envoyer l’email de bienvenue et de remerciement (par exemple). Tu peux aussi vouloir connaître le prénom de des inscrits, de façon à faire un email un peu plus personnalisé qui commence par « Salut [prénom] ».
Tout dépend du niveau de complexité que tu veux, mais au minimum c’est une base de données avec les adresses email et quelques infos associées, ainsi qu’une petite app Web qui permet à tes futurs abonnés de s’inscrire en renseignant leur email via un formulaire simple. Sans doute faudra-t-il aussi quelques script pour automatiser certains emails, et un moyen simple (pour toi) de déclencher l’envoi des emails dès que tu en as un nouveau à envoyer à tout le monde.
Pour la seconde partie, l’envoi des emails, tu as deux solutions :
- gérer toi-même le serveur d’email (un serveur SMTP configuré correctement) ;
- sous-traiter ça (conseillé).
quel technologie dois-je utiliser ?
Ce que tu veux. Tu es développeur full-stack, donc tu connais déjà sûrement tes outils de prédilection. Tu peux sans doute t’en servir.
est-ce obligatoire d’avoir un serveur privé
Non, tu peux sous-traiter la partie envoi à des services spécialisés (AWS SES, Mailgun, …). C’est ce que je te conseillerais, dans un premier temps. Même si tu veux, un jour, disposer de tes propres serveurs d’envoi, ton code ne changera pas nécessairement si tu le codes de façon évolutive : il suffira par exemple de mettre à jour les informations SMTP du serveur de sortie.
quels sont les détails à prendre en compte ?
Je dirais que les détails importants à prendre en compte ne sont pas tant techniques, mais administratifs et juridiques. Dès lors que tu as une base de données pleines d’adresses email en ta possession, tu dois te soumettre à certaines obligations selon la juridiction dont tu dépends. Je n’entre pas dans les détails car ce n’est pas mon domaine.
Je pense qu’au minimum, il faut suivre les bonnes pratiques, c’est-à-dire intégrer un lien de désinscription (et ton app Web backend doit le gérer correctement) et gérer les bounces pour désinscrire automatiquement les emails inactifs/inexistants (là encore, c’est ton système qui doit le gérer en monitorant les retours de code SMTP).