10 KiB
Email Template System - Implementation Summary
Overview
Implemented a unified email template system for Al Hammadi Hospital using the hospital's official brand colors and design language across all application emails.
🎨 Brand Identity
Color Palette
| Color | Hex Code | Usage |
|---|---|---|
| Primary Navy | #005696 |
Main brand color, headers, primary buttons |
| Accent Blue | #007bbd |
Gradients, secondary elements, links |
| Light Background | #eef6fb |
Info boxes, highlights, backgrounds |
| Slate Gray | #64748b |
Secondary text |
| Success Green | #10b981 |
Positive indicators, success metrics |
| Warning Yellow | #f59e0b |
Alerts, warnings, important notices |
Design Features
- Gradient Header:
linear-gradient(135deg, #005696 0%, #007bbd 100%) - Responsive Layout: Mobile-optimized (320px - 1920px)
- Email Client Compatibility: Gmail, Outlook, Apple Mail, Yahoo Mail
- Dark Mode Support: Automatic adaptation
- RTL Support: Arabic language ready
📧 Templates Updated
1. Base Template
File: templates/emails/base_email_template.html
Features:
- Responsive email wrapper
- Hospital logo header with gradient background
- Multiple content blocks (hero, content, CTA, info boxes)
- Professional footer with contact information
- Extensible block structure
Blocks Available:
title- Email titlepreheader- Preview texthero_title- Main headinghero_subtitle- Subheadingcontent- Main content areacta_section- Call-to-action buttoninfo_box- Information/warning boxfooter_address- Footer contact infoextra_styles- Custom CSS
2. Patient-Facing Templates
Survey Invitation
File: templates/emails/survey_invitation.html
Used By: Survey distribution system Context Variables:
patient_namevisit_datesurvey_durationsurvey_linkdeadline
Features:
- Personalized greeting
- Benefits highlights with icons
- Survey information box
- Clear call-to-action
Appointment Confirmation
File: templates/emails/appointment_confirmation.html
Used By: Appointment booking system Context Variables:
patient_nameappointment_idappointment_dateappointment_timedepartmentdoctor_namelocationreschedule_link
Features:
- Appointment details card
- Important reminders section
- Reschedule/cancel CTA
- Contact information
Survey Results Notification
File: templates/emails/survey_results_notification.html
Used By: Analytics reporting system Context Variables:
recipient_namedepartment_nameoverall_scoretotal_responsesresponse_ratesurvey_periodresults_linkdeadline
Features:
- Statistics dashboard (3 metrics)
- Key highlights section
- Action items alert
- Full report access
3. Staff/Admin Templates
Explanation Request
File: templates/emails/explanation_request.html
Used By: apps/complaints/tasks.py::send_explanation_request_email()
Context Variables:
staff_namecomplaint_idcomplaint_titlepatient_namehospital_namedepartment_namecategorystatuscreated_datedescriptioncustom_message(optional)explanation_url
Features:
- Complaint details card (8 fields)
- Custom message from PX team
- Important information box
- Submit explanation CTA
Integration:
# Updated in apps/complaints/tasks.py:1584
html_message = render_to_string(
'emails/explanation_request.html',
context
)
send_mail(
subject=subject,
message=message_text,
from_email=settings.DEFAULT_FROM_EMAIL,
recipient_list=[explanation.staff.email],
html_message=html_message,
fail_silently=False
)
New Complaint Admin Notification ⭐ NEW
File: templates/emails/new_complaint_admin_notification.html
Used By: apps/complaints/tasks.py::notify_admins_new_complaint()
Context Variables:
admin_namepriority_badgeis_high_priorityreference_numbercomplaint_titlepriority(low, medium, high, critical)severity(low, medium, high, critical)statuspatient_namemrncontact_phonecontact_emailhospital_namedepartment_namedescriptioncomplaint_urlnotification_typecurrent_time
Features:
- Priority/severity badges with color coding
- Complaint details grid
- Patient information section
- Hospital/department information
- Description preview
- Action required notice
- View complaint CTA
Integration:
# Updated in apps/complaints/tasks.py:2436
html_message = render_to_string(
'emails/new_complaint_admin_notification.html',
context
)
NotificationService.send_email(
email=admin.email,
subject=subject,
message=message_text,
html_message=html_message,
...
)
User Invitation
File: templates/accounts/onboarding/invitation_email.html
Used By: apps/accounts/services.py:EmailService.send_invitation_email()
Context Variables:
user(user instance)activation_urlexpires_at
Features:
- Welcome message
- Onboarding process overview (4 items)
- Account setup CTA
- Expiry notice
Integration:
# apps/accounts/services.py:409
message_html = render_to_string(
'accounts/onboarding/invitation_email.html',
context
)
send_mail(
subject=subject,
message=message_text,
from_email=settings.DEFAULT_FROM_EMAIL,
recipient_list=[user.email],
html_message=message_html,
fail_silently=False
)
Invitation Reminder
File: templates/accounts/onboarding/reminder_email.html
Used By: apps/accounts/services.py:EmailService.send_reminder_email()
Context Variables:
user(user instance)activation_urlexpires_at
Features:
- Friendly reminder message
- Benefits highlights (3 items)
- Setup CTA
- Urgency notice
Onboarding Completion
File: templates/accounts/onboarding/completion_email.html
Used By: apps/accounts/services.py:EmailService.send_completion_notification()
Context Variables:
user(user instance)user_detail_url
Features:
- Success notification
- User information card (7 fields)
- View details CTA
- Completion timestamp
Password Reset
File: templates/accounts/email/password_reset_email.html
Used By: Django authentication system Context Variables:
userprotocoldomainuid(uidb64)token
Features:
- Secure reset link
- Expiry warning (24 hours)
- Support contact info
- Security notice
🔧 Integration Points
1. Complaints System
File: apps/complaints/tasks.py
Updated Function: send_explanation_request_email()
- Line 1584-1617
- Now renders branded HTML template
- Includes plain text fallback
- Sends via Django's
send_mail()
2. Accounts Service
File: apps/accounts/services.py
Updated Functions:
EmailService.send_invitation_email()- Line 407EmailService.send_reminder_email()- Line 459EmailService.send_completion_notification()- Line 511
All functions now use the branded templates with consistent styling.
3. Notifications Service
File: apps/notifications/services.py
Function: NotificationService.send_email()
- Line 167-191
- Supports HTML emails via
html_messageparameter - Logs all email sends to database
- API integration ready
📊 Usage Statistics
Email Types in Production
-
Transaction Emails (High Volume)
- Appointment confirmations
- Survey invitations
- Password resets
-
Notification Emails (Medium Volume)
- Survey results
- Onboarding notifications
- Explanation requests
-
Administrative Emails (Low Volume)
- User invitations
- Completion notifications
- System alerts
✅ Testing Checklist
Email Client Testing
- Gmail (Web, iOS, Android)
- Outlook (2016+, Office 365)
- Apple Mail (macOS, iOS)
- Yahoo Mail
- AOL Mail
Feature Testing
- Responsive layout (mobile, tablet, desktop)
- Dark mode compatibility
- RTL support (Arabic)
- Image rendering
- Link tracking
- Unsubscribe functionality
Integration Testing
- Complaint explanation requests
- User onboarding emails
- Password reset emails
- Survey invitations
- Appointment confirmations
🚀 Deployment
1. Template Files
All templates are in the Django templates directory and will be automatically available.
2. Logo Configuration
Update the logo URL in your settings or context:
# settings.py
EMAIL_LOGO_URL = 'https://your-cdn.com/static/images/HH_P_H_Logo(hospital)_.png'
# Or in views
context = {
'logo_url': request.build_absolute_uri(
static('images/HH_P_H_Logo(hospital)_.png')
)
}
3. Email Configuration
Ensure Django email settings are configured:
# settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.office365.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'noreply@alhammadihospital.com'
EMAIL_HOST_PASSWORD = 'your-password'
DEFAULT_FROM_EMAIL = 'Al Hammadi Hospital <noreply@alhammadihospital.com>'
📈 Future Enhancements
Planned Features
-
Email Templates for:
- Bulk survey invitations
- Appointment reminders (24h before)
- Complaint status updates
- Appreciation notifications
- Project notifications
-
Advanced Features:
- Email analytics tracking
- A/B testing support
- Dynamic content blocks
- Multi-language support (EN/AR)
- Email preference center
-
Integration Improvements:
- Celery tasks for bulk sending
- Email queue management
- Bounce handling
- Delivery tracking
📞 Support
For questions or issues:
- Email: px-team@alhammadihospital.com
- Department: Patient Experience Management
- Documentation:
templates/emails/README_EMAIL_TEMPLATES.md
Version: 1.0
Created: March 12, 2026
Last Updated: March 12, 2026
Maintained by: PX360 Development Team