Teacher Evaluation Email System Overview
This document provides a comprehensive overview of the email functionality in the Teacher Evaluation system, covering both GUI and API approaches, configuration options, and system architecture.
Table of Contents
- System Overview
- Email Capabilities
- Architecture
- Configuration
- User Workflows
- Technical Implementation
- Security & Compliance
System Overview
The Teacher Evaluation Email System is a comprehensive solution for sending evaluation reports via email with multiple attachment formats, automatic delivery options, and flexible configuration settings.
Key Features
- Multiple Access Methods: Web GUI and REST API
- Rich Attachment Support: PDF, DOCX, and CSV formats
- Flexible SMTP Configuration: Organization-specific or system default
- Automatic Email Delivery: Configurable auto-send on completion
- Custom Messaging: Personalized email content
- Fallback Mechanisms: Multiple delivery options and error handling
Supported Use Cases
- Individual Teacher Feedback: Send single evaluation reports
- Batch Evaluation Summaries: Send aggregated analysis reports
- Automated Workflows: Automatic delivery upon completion
- Manual Override: Ad-hoc sending with custom recipients
- Multi-format Delivery: Different attachment formats for different needs
Email Capabilities
Attachment Formats
PDF Reports
- Content: Professionally formatted evaluation report
- Features: Charts, graphs, detailed analysis, branding
- Use Case: Professional sharing, archiving, presentations
- File Size: ~200-500KB
- Advantages: Universal compatibility, consistent formatting
- Generated Via: ReportLab with custom templates
Word Documents (DOCX)
- Content: Fully editable evaluation report
- Features: Structured content, tables, editable text
- Use Case: Further editing, custom formatting, collaboration
- File Size: ~300-800KB
- Advantages: Editable, customizable, familiar format
- Generated Via: python-docx with dynamic content
CSV Data Export
- Content: Raw evaluation data and scores
- Features: Detailed scoring breakdown, criterion analysis
- Use Case: Data analysis, spreadsheet integration, research
- File Size: ~50-200KB
- Advantages: Lightweight, data-focused, analysis-ready
- Generated Via: Django CSV writer with structured data
Email Content Structure
Subject: [Organization] - Teacher Evaluation Report - [Teacher Name]
Header Section:
- Personalized greeting
- Report type and organization branding
- Custom message (if provided)
Summary Section:
- Evaluation overview (batch name, rubric, evaluator)
- Key metrics (scores, feedback count, dates)
- Attachment format information
Content Section:
- Detailed analysis description
- Usage instructions
- Professional development notes
Footer Section:
- Organization contact information
- Professional closing
- Branding and signatures
Architecture
System Components
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Web Interface │    │   REST API      │    │  Email Service  │
│                 │    │                 │    │                 │
│ • GUI Forms     │───▶│ • Authentication│───▶│ • SMTP Manager  │
│ • User Controls │    │ • Validation    │    │ • Template Eng. │
│ • Dashboards    │    │ • JSON Handling │    │ • Attachment Gen│
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 ▼
                    ┌─────────────────┐
                    │   Data Layer    │
                    │                 │
                    │ • Models        │
                    │ • Database      │
                    │ • File Storage  │
                    └─────────────────┘
Email Flow Architecture
Request → Authentication → Permission Check → Data Validation
   │
   ▼
Generate Attachments (PDF/DOCX/CSV) → Template Rendering
   │
   ▼
SMTP Configuration Check → Organization SMTP OR Default SMTP
   │
   ▼
Email Sending → Logging → Response → User Confirmation
SMTP Hierarchy
Primary: Organization SMTP Settings
   │
   ├─ Configured? ───Yes──▶ Use Organization SMTP
   │                         │
   │                         ├─ Success ──▶ Deliver Email
   │                         │
   │                         └─ Failure ──▶ Log Error, Use Fallback
   │
   └─ Not Configured ────▶ Use Default SMTP (PrepareBuddy)
                             │
                             └─ Deliver Email via Notification Accounts
Configuration
Organization-Level Configuration
SMTP Settings: - Host, port, authentication credentials - SSL/TLS encryption settings - From name and email address - Custom branding and signatures
Email Preferences: - Default attachment formats - Auto-email enable/disable - Fallback recipient settings - Message templates
Access Controls: - User roles and permissions - Email sending privileges - API access settings
Batch-Level Configuration
Per-Batch Settings: - Auto-email on completion: Enable/disable - Manual email recipient: Fallback address - Email format preferences: PDF/DOCX/CSV combinations - Default email message: Custom content
Format Options:
- pdf_only: PDF format only
- docx_only: Word document only
- pdf_docx: PDF and Word document (recommended)
- all_formats: PDF, Word document, and CSV
User-Level Configuration
Individual Preferences: - Email notification settings - Preferred attachment formats - Language and localization - Contact information
User Workflows
Web Interface Workflow
User Login → Navigate to Evaluation → Click "Email Report"
    │
    ▼
Fill Email Form (Name, Email, Formats, Message)
    │
    ▼
Submit → System Processing → Success Confirmation
    │
    ▼
Email Delivered → Recipient Receives Attachments
API Workflow
API Authentication → POST Request with JSON Data
    │
    ▼
Server Validation → Permission Check → Data Processing
    │
    ▼
Attachment Generation → Email Sending → JSON Response
    │
    ▼
Success/Error Status → Logging → API Response
Automatic Email Workflow
Batch Evaluation Completed → Check Auto-Email Settings
    │
    ▼
If Enabled: Get Teacher Email → Generate Default Attachments
    │
    ▼
Send Email with Default Message → Log Success/Failure
Technical Implementation
Backend Components
Django Views:
- email_teacher_evaluation(): Individual evaluation emails
- email_batch_evaluation(): Batch evaluation emails
- api_send_individual_evaluation_email(): API individual emails
- api_send_batch_evaluation_email(): API batch emails
Email Service (qbank/utils/email_service.py):
- send_teacher_evaluation_email(): Main email function
- _send_teacher_evaluation_email_thread(): SMTP handling
- Organization SMTP with fallback to default accounts
Document Generation:
- generate_teacher_evaluation_pdf(): PDF creation
- generate_teacher_evaluation_docx(): Word document creation
- download_teacher_evaluation_csv(): CSV export
Database Models
Core Models:
- TeacherFeedbackEvaluation: Individual evaluations
- TeacherFeedbackBatch: Batch evaluations with email settings
- OrganizationSettings: SMTP and email configuration
Email-Specific Fields:
# TeacherFeedbackBatch
send_email_on_completion = models.BooleanField(default=False)
manual_email_recipient = models.EmailField(blank=True)
email_format_preferences = models.CharField(max_length=50)
email_message = models.TextField(blank=True)
API Endpoints
Email API (/assessment/api/):
- POST /evaluations/{id}/email/: Send individual evaluation
- POST /batches/{id}/email/: Send batch evaluation
- POST /batches/{id}/email/configure/: Configure auto-email
- GET /batches/{id}/email/status/: Get email status
Authentication: - Session-based (web interface) - Token-based (API integration) - Permission-based access control
SMTP Configuration
Organization SMTP:
# Organization settings support custom SMTP
settings = organization.settings.get_effective_settings()
if settings.get('smtp_enabled') and settings.get('smtp_host'):
    # Use organization SMTP with custom branding
    server = smtplib.SMTP_SSL(settings.get('smtp_host'), settings.get('smtp_port'))
    server.login(settings.get('smtp_username'), settings.get('smtp_password'))
Default SMTP Fallback:
# Fallback to system notification accounts
EMAIL_ACCOUNTS = [
    {
        'username': 'notification1@preparebuddy.com',
        'smtp_server': 'heracles.mxrouting.net',
        'daily_quota': 400
    },
    # ... multiple accounts for load balancing
]
Logging and Monitoring
Comprehensive Logging: - Email initiation and completion - SMTP connection details - Attachment generation status - Delivery success/failure - Error tracking and debugging
Log Levels:
- INFO: Normal operation, successful delivery
- WARNING: Fallback usage, retry operations
- ERROR: Delivery failures, configuration issues
- DEBUG: Detailed processing steps
Security & Compliance
Data Protection
Email Security: - All SMTP connections use SSL/TLS encryption - No sensitive data stored in email logs - Secure attachment generation and handling - Organization-specific data isolation
Access Control: - Role-based permissions (Admin, Examiner, Member) - Organization-based data access - API authentication requirements - Session management and timeout
Privacy Considerations
Personal Data Handling: - Teacher names and emails processed securely - Evaluation data encrypted in transit - Temporary attachment files cleaned up - Audit trail for email sending
GDPR Compliance: - Data minimization in email content - User consent for email communications - Right to withdraw from email notifications - Data retention and deletion policies
Email Delivery Security
SMTP Security: - SSL/TLS encryption for all connections - Authenticated SMTP only - No plain text credential storage - Secure fallback mechanisms
Content Security: - HTML email sanitization - Attachment virus scanning (organization-dependent) - Spam prevention measures - Email size limitations
Performance Considerations
Scalability Features
Asynchronous Processing: - Background email sending via threading - Non-blocking user interface - Queue management for high volume
Resource Optimization: - Efficient PDF/DOCX generation - Cached email templates - Connection pooling for SMTP - Memory management for large attachments
Load Balancing
Multiple SMTP Accounts: - Round-robin account selection - Daily quota management - Automatic failover - Performance monitoring
System Limits: - Email size restrictions (~10MB total) - Rate limiting per organization - Concurrent email processing - Resource usage monitoring
Monitoring and Analytics
Email Metrics
Delivery Statistics: - Success/failure rates - Delivery time tracking - SMTP performance monitoring - Error pattern analysis
Usage Analytics: - Email volume per organization - Popular attachment formats - API vs GUI usage patterns - User engagement metrics
Health Monitoring
System Health Checks: - SMTP connectivity tests - Email template validation - Attachment generation testing - Performance benchmarking
Alerting: - Failed delivery notifications - SMTP configuration issues - High error rate alerts - Performance degradation warnings
Future Enhancements
Planned Features
Advanced Email Features: - Email scheduling and delayed sending - Rich HTML email templates with organization branding - Email tracking and read receipts - Bulk email operations for multiple recipients
Enhanced Configuration: - Email template customization interface - Advanced SMTP load balancing - Multi-language email support - Email approval workflows
Integration Capabilities: - Learning Management System (LMS) integration - Calendar integration for email scheduling - Advanced analytics and reporting - Webhook support for external systems
Technical Roadmap
Performance Improvements: - Asynchronous task queue (Celery/Redis) - Improved caching strategies - Optimized attachment generation - Enhanced error recovery
Security Enhancements: - Advanced authentication methods - Enhanced audit logging - Improved data encryption - Security compliance reporting
This email system provides a robust, scalable, and user-friendly solution for delivering teacher evaluation reports through multiple channels with comprehensive configuration options and enterprise-grade reliability.
