Skip to main content

Advanced Email System

Django-CFG's Email Module provides enterprise-grade email functionality with template support, delivery tracking, multi-provider integration, and production-ready features.

Philosophy

"Template-First Design"

Rich HTML/text email templates with dynamic context:

from django_cfg.modules.django_email import send_template_email

# Send templated email
send_template_email(
template='welcome_email.html',
context={'user_name': 'John', 'activation_link': 'https://...'},
to=['user@example.com'],
subject='Welcome to our platform!'
)

"Multi-Provider Support"

Seamlessly switch between email providers:

  • SMTP - Traditional SMTP servers
  • SendGrid - Transactional email service
  • Mailgun - Email automation platform
  • Amazon SES - AWS email service
  • Testing Backend - Development and testing

"Production-Ready Features"

Built for enterprise applications:

  • Delivery Tracking - Email status and analytics
  • Bulk Operations - Efficient mass email sending
  • Error Handling - Robust retry mechanisms
  • Template Engine - Django template integration
  • Attachment Support - File and inline attachments
  • Email Validation - Address validation and sanitization

Quick Start

Basic Email Sending

from django_cfg.modules.django_email import send_email

# Simple email
send_email(
subject='Hello World',
message='This is a test email.',
from_email='noreply@example.com',
recipient_list=['user@example.com']
)

Template-Based Emails

from django_cfg.modules.django_email import send_template_email

# HTML template email
send_template_email(
template='emails/notification.html',
context={
'user_name': 'John Doe',
'notification_text': 'Your order has been shipped!',
'action_url': 'https://example.com/track/123'
},
to=['john@example.com'],
subject='Order Shipped'
)

Bulk Email Operations

from django_cfg.modules.django_email import send_bulk_email

# Send to multiple recipients
recipients = [
{'email': 'user1@example.com', 'name': 'User 1'},
{'email': 'user2@example.com', 'name': 'User 2'},
]

send_bulk_email(
template='newsletter.html',
recipients=recipients,
subject='Monthly Newsletter',
context={'month': 'December', 'year': 2024}
)

Architecture

Template System

  • Django Templates - Full Django template engine support
  • HTML/Text Alternatives - Automatic plain text generation
  • Context Variables - Dynamic content insertion
  • Template Inheritance - Reusable email layouts

Provider Integration

  • Unified Interface - Same API for all providers
  • Auto-Configuration - Provider detection and setup
  • Failover Support - Automatic provider switching
  • Rate Limiting - Respect provider limits

Tracking & Analytics

  • Delivery Status - Track email delivery
  • Open Tracking - Monitor email opens
  • Click Tracking - Track link clicks
  • Bounce Handling - Manage bounced emails

Configuration

# settings.py - Standard Django email settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.example.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-password'

# Django-CFG email enhancements
DEFAULT_FROM_EMAIL = 'noreply@example.com'
EMAIL_TEMPLATE_DIR = 'emails'
EMAIL_TRACKING_ENABLED = True

Use Cases

User Authentication

# Send welcome email
send_template_email(
template='emails/welcome.html',
context={'user': user, 'activation_link': activation_url},
to=[user.email],
subject='Welcome! Please activate your account'
)

# Password reset
send_template_email(
template='emails/password_reset.html',
context={'user': user, 'reset_link': reset_url},
to=[user.email],
subject='Reset your password'
)

Transactional Emails

# Order confirmation
send_template_email(
template='emails/order_confirmation.html',
context={'order': order, 'items': order.items.all()},
to=[order.user.email],
subject=f'Order #{order.id} confirmed'
)

# Invoice notification
send_template_email(
template='emails/invoice.html',
context={'invoice': invoice, 'due_date': invoice.due_date},
to=[invoice.customer.email],
subject=f'Invoice #{invoice.number}'
)

Marketing Campaigns

# Newsletter
newsletter_recipients = User.objects.filter(
newsletter_subscribed=True,
is_active=True
)

send_bulk_email(
template='emails/newsletter.html',
recipients=[{'email': u.email, 'name': u.get_full_name()} for u in newsletter_recipients],
subject='Monthly Newsletter - December 2024',
context={'featured_articles': articles, 'unsubscribe_url': '...'}
)

Features

Template Features

  • Rich HTML Templates - Full HTML support with CSS
  • Plain Text Alternatives - Auto-generated or custom
  • Dynamic Content - Context-based personalization
  • Attachments - File and inline image support
  • Localization - Multi-language template support

Delivery Features

  • Batch Processing - Efficient bulk sending
  • Queue Integration - Background processing support
  • Retry Logic - Automatic retry on failures
  • Rate Limiting - Respect provider limitations
  • Bounce Handling - Manage delivery failures

Testing Features

  • Email Testing Backend - Development email capture
  • Template Preview - Preview emails before sending
  • Validation Tools - Email address validation
  • Debug Mode - Detailed logging and debugging

See Also

Email Module Documentation

Getting Started:

Configuration & Setup

Project Setup:

Email Configuration:

Communication Modules:

Built-in Apps:

Background Processing:

Tools & Deployment

CLI & Testing:

Build powerful email experiences with enterprise reliability! 📧