How mrstzz/php-blastmail works
BlastMail is a Laravel email-campaign manager. Users register, maintain contact lists and templates, configure and schedule campaigns, then inspect delivery, opening, click, and aggregate metrics. CampaignController is the sampled workflow orchestrator; queued jobs fan out campaign mail to subscribers, while mail generation rewrites links for tracking. The README documents authentication, soft-delete restoration, tracking, and statistics. Some controllers and route wiring were not sampled, so those links are omitted or marked unverified rather than inferred.
Main entry points: CampaignController.php Campaign workflow · SendEmailCampaignJob.php Subscriber delivery · EmailCampaign.php Campaign email · EmailList.php List model
Components 20
Accounts
- Registration
app/Http/Controllers/Auth/RegisteredUserController.php - Authentication
app/Http/Controllers/Auth/AuthenticatedSessionController.php - User account
app/Models/User.php - Profile settings
app/Http/Controllers/ProfileController.php
Audience and content
- Email lists
app/Http/Controllers/EmailListController.php - Subscribers
app/Http/Controllers/SubscriberController.php - Templates
app/Http/Controllers/TemplateController.php - List model
app/Models/EmailList.php - Subscriber model
app/Models/Subscriber.php - Template model
app/Models/Template.php
Campaign management
- Campaign workflow
app/Http/Controllers/CampaignController.php - Campaign model
app/Models/Campaign.php
Delivery and engagement
- Campaign fan-out
app/Jobs/SendEmailsCampaignJob.php - Subscriber delivery
app/Jobs/SendEmailCampaignJob.php - Campaign recipient record
app/Models/CampaignMail.php - Campaign email
app/Mail/EmailCampaign.php - Mail transport
- Open and click tracking
app/Http/Controllers/TrackingController.php - Campaign metrics
app/Models/CampaignMail.php
Other components
- User
Connections 25
- User → Registration: registers
app/Http/Controllers/Auth/RegisteredUserController.php - Registration → User account: creates account
app/Http/Controllers/Auth/RegisteredUserController.php - User → Authentication: signs in
- User → Email lists: manages lists
- Email lists → List model: uses model
app/Http/Controllers/EmailListController.php - Subscribers → List model: loads list
app/Http/Controllers/SubscriberController.php - Subscribers → Subscriber model: manages records
app/Http/Controllers/SubscriberController.php - Templates → Template model: manages templates
app/Http/Controllers/TemplateController.php - User → Campaign workflow: configures campaign
- Campaign workflow → List model: loads lists
app/Http/Controllers/CampaignController.php - Campaign workflow → Template model: loads templates
app/Http/Controllers/CampaignController.php - Campaign workflow → Campaign model: creates and queries
app/Http/Controllers/CampaignController.php - Campaign workflow → Campaign fan-out: dispatches after response
app/Http/Controllers/CampaignController.php - Campaign workflow → Campaign metrics: queries statistics
app/Http/Controllers/CampaignController.php - Campaign workflow → Profile settings: manages profile
- Campaign fan-out → Subscriber delivery: dispatches per recipient
app/Jobs/SendEmailsCampaignJob.php - Subscriber delivery → Campaign model: loads campaign
app/Jobs/SendEmailCampaignJob.php - Subscriber delivery → Subscriber model: loads recipient
app/Jobs/SendEmailCampaignJob.php - Subscriber delivery → Campaign recipient record: records delivery
app/Jobs/SendEmailCampaignJob.php - Subscriber delivery → Campaign email: sends message
app/Jobs/SendEmailCampaignJob.php - Campaign email → Mail transport: delivers through
- Campaign email → Open and click tracking: rewrites click links
app/Mail/EmailCampaign.php - Open and click tracking → Campaign recipient record: records engagement
- Campaign metrics → Campaign recipient record: aggregates recipient data
app/Models/CampaignMail.php - Campaign workflow → Campaign model: restores soft-deleted
app/Http/Controllers/CampaignController.php