## Description `nodemailer` installed but no email service exists. Build email service with HTML templates, preference management, and async delivery. **Config**: SMTP_HOST/PORT/USER/PASS, EMAIL_FROM in .env.example ## Acceptance Criteria - [ ] EmailService in src/notifications/senders/ - [ ] HTML templates: Welcome, Funded, Milestone Completed/Approved, Dispute Raised/Resolved, Refunded, Deadline Approaching - [ ] Each template: branding header, event details, CTA button, unsubscribe footer - [ ] String interpolation or handlebars templating - [ ] Integrate with NotificationPreferenceService (opt-out) - [ ] Queue emails for async delivery - [ ] SMTP failure retry: 3x exponential backoff - [ ] Log all sends: recipient, template, status - [ ] Dry-run mode for development - [ ] EMAIL_ENABLED flag (default false) - [ ] Unit tests for template rendering - [ ] Integration test with mock SMTP **Points**: 150
Description
nodemailerinstalled but no email service exists. Build email service with HTML templates, preference management, and async delivery.Config: SMTP_HOST/PORT/USER/PASS, EMAIL_FROM in .env.example
Acceptance Criteria
Points: 150