A JavaFX application for sending personalized internship application emails with resume attachments.
- Email Personalization: Replaces
{name},{company}, and{position}placeholders - Bulk Sending: Sends to multiple contacts with random delays (20s-2min)
- Progress Tracking: Real-time progress bar and activity logging
- File Management: PDF resume attachment and JSON contact loading
- Java 17+
- Maven 3.6+
- Gmail account with App Password
-
Configure email credentials in
application.properties:email.username=your.email@gmail.com email.password=your-app-password email.default.from=your.email@gmail.com email.default.fromName=Your Name
-
Build and run:
mvn clean compile mvn javafx:run
Or use the provided scripts:
- Linux/Mac:
./run.sh - Windows:
run.bat
- Linux/Mac:
Create a JSON file using sample_contacts.json as template:
[
{
"name": "John Smith",
"company": "Tech Corp",
"position": "Software Engineer Intern",
"emails": ["john@techcorp.com", "hr@techcorp.com"]
}
]- Enter email subject and body (use
{name},{company},{position}placeholders) - Select PDF resume and load contacts JSON file
- Preview personalized email for first contact
- Click "Send All Emails" to start bulk sending
Subject: Internship Application - {position} at {company}
Body:
Dear {name},
I am writing to express my interest in the {position} role at {company}.
Please find my resume attached for your review.
Best regards,
[Your Name]
email.delay.min=20 # Minimum delay (seconds)
email.delay.max=120 # Maximum delay (seconds)Update SMTP settings in application.properties for non-Gmail providers.
| Issue | Solution |
|---|---|
| Email connection failed | Verify Gmail App Password and credentials |
| File not found | Check file paths and JSON format |
⚠️ Use Gmail App Passwords (not regular passwords)- 🧪 Test with small contact lists first
- 📄 Only PDF resume files supported
- 🕒 Random delays prevent spam flagging
Feel free to submit issues, fork the repository, and create pull requests for any improvements.
This project is licensed under the MIT License - see the LICENSE file for details.