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 10
- JWT-based authentication with refresh token rotation
- Webhook integration for email capture from your mail server
- Webhook capture feature for testing HTTP webhooks
- 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
- Webhook capture and inspection UI
- User settings and password management
- Real-time email and webhook notifications
-
Database: MySQL with RoboDodd.OrmLite (Dapper-based)
- Efficient email storage and retrieval
- User management and authentication
- Email grouping with retention policies
- Webhook bucket organization
- .NET 10 SDK
- Node.js 22+ and npm
- MySQL 8.0+
- Mail server with webhook support (optional)
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 } } -
Start the API (tables are created automatically on startup):
dotnet run
-
Navigate to the web directory:
cd src/MailVoidWeb -
Install dependencies:
npm install
-
Configure the API endpoint in
src/environments/environment.tsif 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 testsnpm 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 testsBuild and run with Docker:
docker build -f src/MailVoidApi/Dockerfile -t mailvoid .
docker run -p 5133:80 mailvoidBackend:
- .NET 10
- RoboDodd.OrmLite (Dapper-based micro ORM)
- 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/ # Database service
│ └── 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.
