A developer email testing tool that captures and organizes test emails without creating separate email accounts. It integrates with your mail server via webhooks and provides a clean web interface for viewing and managing messages. It also includes a webhook capture feature for testing HTTP webhooks.
- Receive and store emails via mail server webhooks
- Organize emails into groups with configurable retention policies
- Capture and inspect arbitrary HTTP webhooks
- Real-time notifications via SignalR
- JWT authentication with refresh token rotation
- Responsive Angular SPA with dark theme
- .NET 10 SDK
- Node.js 22+ and npm
- MySQL 8.0+
git clone https://github.com/timothydodd/MailVoid.git
cd MailVoidcd src/MailVoidApiConfigure appsettings.json with your MySQL connection and JWT settings:
{
"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 (database tables are created automatically):
dotnet runcd src/MailVoidWeb
npm install
npm startUpdate src/environments/environment.ts if your API is not running on the default port.
- Username:
admin - Password:
admin
docker build -f src/MailVoidApi/Dockerfile -t mailvoid .
docker run -p 5133:80 mailvoid| Layer | Technology |
|---|---|
| Backend | .NET 10, RoboDodd.OrmLite (Dapper), SignalR |
| Frontend | Angular 19, RxJS, Lucide, Bootstrap |
| Database | MySQL 8.0+ |
src/
├── MailVoidApi/ # .NET backend API
│ ├── Controllers/ # REST endpoints
│ ├── Services/ # Business logic
│ ├── Models/ # Entity models
│ └── Data/ # Database service
├── MailVoidSmtpServer/ # SMTP server for local development
├── MailVoidWeb/ # Angular frontend
│ └── src/app/
│ ├── Pages/ # Page components
│ ├── _components/ # Shared components
│ └── _services/ # API and auth services
└── RoboDodd.OrmLite/ # ORM submodule
This project is licensed under the MIT License.
