Un service Windows fera l'affaire. Un bon avantage d'un service Windows est qu'il démarre au démarrage de Windows (ou peut être configuré de toute façon). Ainsi, la machine peut être laissée sans surveillance (comme devrait l'être un bon serveur) et n'a besoin d'aucun utilisateur connecté pour que le service s'exécute. Donc, si c'est une considération importante pour votre scénario alors peut-être un service Windows serait le chemin à parcourir.
Si vous voulez simplement créer une application de console à la place (ce qui peut généralement être plus facile à créer/tester/déboguer), vous pouvez la programmer avec le planificateur de tâches Windows natif. Cependant, à moins que je ne me trompe, je pense qu'un utilisateur doit être connecté à la machine pour pouvoir l'exécuter. Au moins dans certaines circonstances. Donc, un service Windows est probablement votre meilleur pari pour une tâche sans surveillance. En ce qui concerne la création du service, Visual Studio doit disposer d'un modèle de projet pour cela. La planification serait traitée avec un Timer.
Avez-vous vraiment besoin d'envoyer un e-mail depuis l'application .NET? Autre option: envoyer à partir du travail SQL Server. – Alexan