MailVoid is a developer-focused email testing tool that simplifies managing multiple test email addresses without creating separate email accounts. It integrates with your mail server via webhooks to capture and organize test emails in a clean web interface.
Warning
This project is currently in prototype status. Expect frequent changes and updates.
-
Backend API: RESTful API built with C# .NET 9
- JWT-based authentication with refresh token rotation
- Webhook integration for email capture from your mail server
- Health check endpoints for monitoring
- Real-time notifications via SignalR
-
Web Frontend: Modern Angular 19 SPA
- Clean, responsive interface for email management
- Email grouping and organization
- User settings and password management
- Real-time email notifications
-
Database: MySQL with Entity Framework Core
- Efficient email storage and retrieval
- User management and authentication
- Email grouping with retention policies
- .NET 9 SDK
- Node.js 20.19+ and npm
- MySQL 8.0+
- Mail server with webhook support
git clone https://github.com/timothydodd/MailVoid.git
cd MailVoid
-
Navigate to the API directory:
cd src/MailVoidApi
-
Configure your settings in
appsettings.json
:{ "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=mailvoid;User=root;Password=yourpassword;" }, "JwtSettings": { "Secret": "your-256-bit-secret-key-here", "Issuer": "MailVoidApi", "Audience": "MailVoidClient", "ExpiryMinutes": 15 } }
-
Run database migrations:
dotnet ef database update
-
Start the API (this also serves the frontend in production):
dotnet run
-
Navigate to the web directory:
cd src/MailVoidWeb
-
Install dependencies:
npm install
-
Configure the API endpoint in
src/environments/environment.ts
if needed -
Start the development server:
npm start
- Access the application at
http://localhost:8200
(development) orhttp://localhost:5133
(production) - Log in with default credentials:
- Username:
admin
- Password:
admin
- Username:
- Configure your mail server to send webhooks to your API endpoint
- Start receiving and managing test emails!
dotnet run # Run the API with frontend proxy
dotnet build # Build the project
dotnet test # Run tests
npm start # Start development server
npm run build # Build for production
npm run lint # Run ESLint
npm run format # Format code with Prettier
npm test # Run unit tests
Build and run with Docker:
docker build -f src/MailVoidApi/Dockerfile -t mailvoid .
docker run -p 5133:80 mailvoid
Backend:
- .NET 9
- Entity Framework Core 8 with Pomelo MySQL provider
- JWT Authentication
- SignalR for real-time updates
Frontend:
- Angular 19 with standalone components
- RxJS for reactive programming
- Lucide icons
- Bootstrap-based custom styling
- ngx-toastr for notifications
- @ng-select for enhanced dropdowns
MailVoid/
├── src/
│ ├── MailVoidApi/ # .NET Backend API
│ │ ├── Controllers/ # API endpoints
│ │ ├── Services/ # Business logic
│ │ ├── Models/ # Entity models
│ │ └── Data/ # EF Core context
│ └── MailVoidWeb/ # Angular Frontend
│ ├── src/app/
│ │ ├── Pages/ # Page components
│ │ ├── _components/ # Shared components
│ │ └── _services/ # Angular services
│ └── src/styles/ # Global styles
└── .github/workflows/ # CI/CD pipelines
This project is in prototype phase. Contributions are welcome but please wait until we're closer to v1.0 for major changes. Feel free to:
- Report bugs and issues
- Suggest new features
- Submit pull requests for fixes
This project is licensed under the MIT License - see the LICENSE file for details.