feat: add email system with multi-provider support
Implements a comprehensive email system with: - Multi-provider support (SMTP, SendGrid, Mailgun, Amazon SES) - Database-stored templates with i18n (EN, FR, DE, LB) - Jinja2 template rendering with variable interpolation - Email logging for debugging and compliance - Debug mode for development (logs instead of sending) - Welcome email integration in signup flow New files: - models/database/email.py: EmailTemplate and EmailLog models - app/services/email_service.py: Provider abstraction and service - scripts/seed_email_templates.py: Template seeding script - tests/unit/services/test_email_service.py: 28 unit tests - docs/features/email-system.md: Complete documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -125,6 +125,39 @@ class Settings(BaseSettings):
|
||||
stripe_webhook_secret: str = ""
|
||||
stripe_trial_days: int = 30 # 1-month free trial (card collected upfront but not charged)
|
||||
|
||||
# =============================================================================
|
||||
# EMAIL CONFIGURATION
|
||||
# =============================================================================
|
||||
# Provider: smtp, sendgrid, mailgun, ses
|
||||
email_provider: str = "smtp"
|
||||
email_from_address: str = "noreply@wizamart.com"
|
||||
email_from_name: str = "Wizamart"
|
||||
email_reply_to: str = "" # Optional reply-to address
|
||||
|
||||
# SMTP Settings (used when email_provider=smtp)
|
||||
smtp_host: str = "localhost"
|
||||
smtp_port: int = 587
|
||||
smtp_user: str = ""
|
||||
smtp_password: str = ""
|
||||
smtp_use_tls: bool = True
|
||||
smtp_use_ssl: bool = False # For port 465
|
||||
|
||||
# SendGrid (used when email_provider=sendgrid)
|
||||
sendgrid_api_key: str = ""
|
||||
|
||||
# Mailgun (used when email_provider=mailgun)
|
||||
mailgun_api_key: str = ""
|
||||
mailgun_domain: str = ""
|
||||
|
||||
# Amazon SES (used when email_provider=ses)
|
||||
aws_access_key_id: str = ""
|
||||
aws_secret_access_key: str = ""
|
||||
aws_region: str = "eu-west-1"
|
||||
|
||||
# Email behavior
|
||||
email_enabled: bool = True # Set to False to disable all emails
|
||||
email_debug: bool = False # Log emails instead of sending (for development)
|
||||
|
||||
# =============================================================================
|
||||
# DEMO/SEED DATA CONFIGURATION
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user