MultiMailSender is an open-source bulk email sending application with a modern Angular-based frontend and a robust Spring Boot backend. It allows you to send personalized emails to multiple recipients, each with custom parameters and optional attachments.
- Bulk email sending with per-recipient personalization
- Supports PDF and other file attachments
- Secure authentication using Gmail App Password
- User-friendly, modern, and well-documented interface
- Server health check endpoint
- Easy deployment with Docker support
- Backend: Java 17, Spring Boot 3, Spring Mail, Maven, Lombok
- Frontend: Angular 20, Bootstrap, RxJS
- Other: Docker (optional)
- Requirements: Java 17+, Maven
- Setup:
or
cd backend/MultiMailSender ./mvnw clean install ./mvnw spring-boot:run
mvn clean install mvn spring-boot:run
- To run with Docker:
- Update the
image
field incompose.yaml
with your own image name. - Then run:
docker compose -f compose.yaml up
- Update the
- Requirements: Node.js (18+), npm
- Setup:
or
cd frontend/multi-mail-sender npm install npm start
ng serve
- Access the app at http://localhost:4200
- Enter your Gmail address and App Password.
- Fill in the email subject and body. You can use placeholders like
{companyName}
in the body for personalization. - Add recipient companies/people with their email addresses and parameters.
- Optionally, attach files (e.g., PDF).
- Click the "Send Mails" button.
- Endpoint:
POST /send-mails-with-attachment
- Content-Type:
multipart/form-data
- Parameters:
request
: JSON containing email and recipient detailsfiles
: (optional) Files to attach
{
"username": "example@gmail.com",
"password": "examplePassword",
"subject": "Internship Application - John Doe",
"bodydraft": "Dear Hiring Manager,\n\nI am writing to express my interest in the internship position at your {companyName} company. I called you but you didn't answer on this number: {companyNumber}\n\nBest regards,\nJohn Doe",
"companyData": [
{
"id": 0,
"companyMail": "company0@gmail.com",
"parameters": {
"companyName": "company0",
"companyNumber": "1234567890"
}
}
]
}
- Endpoint:
GET /health
- Response:
{ "message": "Server is running", "data": null }
- Fork the repository and create a new branch.
- Make and test your changes.
- Submit a pull request.
This project is licensed under the MIT License.