Custom Bulk Email Managing Project
BabaFunkeEmailManager is a complete project for managing subscribers, newsletters/emails and requests. It's been developed as a cheaper alternative to popular Email marketing tools in the market. It focuses on the core tasks of adding/updating/deleting/unsubscribing contacts (subscribers), creating and sending emails (newsletter) using a combination of Azure Table Storage, Azure Functions and Azure Queue Storage. Lastly, it provides a simple means of creating requests to send out emails to the list of subscribers. It includes the core API project, a client-facing website for managing the operations and finally, an alternative WebJob project for lengthy processes. It was inspired by the need for a self-sustainable system for engaging my growing audience via email.
There is a single solution file which contains the projects below
- BabaFunkeEmailManager.Data - an Asp.Net Core Class library project that holds the data models and entities.
- BabaFunkeEmailManager.Service - an Asp.Net Core Class library project that holds the business logic.
- BabaFunkeEmailManager.Functions - an Azure Functions project that consumes the services above and exposes the endpoints for consumption.
- BabaFunkeEmailManager.Webjob - a standalone project for long-running background tasks. It’s an alternative to using a Queue Trigger Azure Function. It’s ideal if you’ll be running lengthy processes frequently and round the clock.
- BabaFunkeEmailManager.Client - a client-facing project that provides a user-friendly UI for managing the entire process.
- BabaFunkeEmailManager.Tests - an Xunit test for the services and endpoints.
Clone this git repo and open the solution in Visual Studio. Update all Startup.cs, appsettings.json and local.settings.json files with your details where applicable. This includes SendGrid API keys, email addresses etc.
For more on the project's background and walkthrough, read my 5-series post in the following order