Skip to main content

Django Email Learning Logo

Django Email Learning

A Django package for creating email-based learning platforms with IMAP integration and React frontend components.

Sponsorship

Support our open-source work and community projects by sponsoring us through GitHub Sponsors. Depending on your sponsorship tier, we can feature your logo and link on the project’s README and documentation.

Sponsor us

What is django-email-learning?

django-email-learning is an open-source Django app, designed to provide a complete email-based learning platform. It is inspired by the Darsnameh email-learning service, which unfortunately shut down in July 2017. This library aims to revive that concept and make it accessible to anyone who wants to launch a similar service.

If you find this project useful, a ⭐ on GitHub helps others discover it.

Want to try it online first? Create a free account on InboxAcademy, our hosted platform built on top of django-email-learning.

Why an email learning platform?

An email learning platform is a type of e-learning system where course content is delivered directly to learners’ inboxes. Platform admins can create courses, lessons, and quizzes, and configure the timing rules that determine when each next lesson or quiz is sent.

The system exposes management commands and/or API endpoints that can be triggered by cron jobs or cloud schedulers to:

  • Track learner progress

  • Send lessons and quizzes via email

  • Handle automated transitions between course steps

Additionally, the platform can issue online completion certificates that learners can verify using a QR code.

Why use email for e-learning?

While modern e-learning platforms often rely heavily on video content and complex web interfaces, email remains a powerful and inclusive channel. Some of the reasons:

  • Low bandwidth requirement: Email works well in regions with slow or unstable internet.

  • High accessibility: No need to install apps or log into a portal—lessons arrive directly in the inbox.

  • Resilience to censorship: Emails are often less likely to be blocked than certain websites or platforms under restrictive governments.

  • Simplicity: Email is universal, familiar, and works on virtually any device.

Documentation

Comprehensive documentation is available at django-email-learning.readthedocs.io, including:

  • Installation Guide: Step-by-step setup instructions
  • Platform Management: Creating organizations, courses, and managing learners
  • Technical Reference: Management commands and configuration
  • Usage Examples: Real-world implementation scenarios

Installation

Quick Start

The fastest way to get a working development environment is the interactive setup command:

pip install django-email-learning
django-email-learning-init

This sets up a new Django project with django_email_learning pre-configured — virtual environment, secrets, migrations, and a superuser — in one go. See the Installation Guide for the full walkthrough.

Manual Installation

For existing Django projects, follow these steps.

1. Install the Package

pip install django-email-learning

2. Add to INSTALLED_APPS

Add django_email_learning to your INSTALLED_APPS in the Django settings file:

INSTALLED_APPS = [
    ...
    'django_email_learning',
]

3. Configure Settings

Add the required configuration for the site base URL in your Django settings:

DJANGO_EMAIL_LEARNING = {
    "SITE_BASE_URL": "<YOUR_SITE_BASE_URL_STARTING_WITH_HTTP>",
    "ENCRYPTION_SECRET_KEY": "<LONG_RANDOM_STRING>",
    "JWT_SECRET_KEY": "<LONG_RANDOM_STRING>",
}

ENCRYPTION_SECRET_KEY should be a long random string used to protect sensitive values such as stored API Keys.

4. Configure Media Files

This app uses Django's MEDIA files to save organization logos. Ensure your media settings are configured correctly. See the MEDIA_URL setting for details.

5. Run Migrations

python manage.py migrate

6. Add URLs

Include the app URLs in your main Django URLs configuration:

from django.urls import path, include
from django_email_learning import urls as email_learning_urls

urlpatterns = [
    ...
    path('your_preferred_path/', include(email_learning_urls, namespace='django_email_learning')),
]

The platform will be accessible at your_preferred_path/platform/.

Access Control Notes

  • Platform Access: You need to be logged in to access the /platform sub-URL, which is used for managing courses and viewing learner progress.

Usage

Newsletters

django-email-learning includes a built-in newsletter system. Platform admins can create newsletters per organisation, grow a subscriber list, and schedule email campaigns (sendouts) that are delivered automatically. See the Newsletter documentation for the full configuration reference and usage guide.

Optional: auto-subscribe on course enrollment

Link a newsletter to a course in the platform UI (or via API). When a learner enrolls in that course they are automatically subscribed to the linked newsletter. Learners have the option to opt out by unchecking the subscription checkbox during enrollment.

Content Delivery

This app uses the email backend defined in Django settings to deliver course content. Assuming you have active courses and enrollments, you need to schedule a job that runs the content delivery management command periodically (e.g., using cron or a cloud scheduler).

Execute the content delivery job using:

python manage.py deliver_contents

You can also trigger this job via API, which is useful when running from an external scheduler (for example, cloud scheduler services):

GET /your_preferred_path/api/jobs/deliver_contents/
Authorization: Bearer <API_KEY>

This endpoint requires an API key. You can generate and manage API keys from Platform Settings > API Keys in the platform UI.

Contributing

We welcome contributions! Please read our Contributing Guide to learn about our development process, how to set up the development environment, and how to submit pull requests.

License

This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.

Metadata

Release files for django-email-learning 7.16.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-email-learning 7.16.1
File Size Uploaded
django_email_learning-7.16.1.tar.gz 1.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-email-learning 7.16.1
File Interpreter ABI Platform
django_email_learning-7.16.1-py3-none-any.whl Python 3 none any Details

Total release size: 3.2 MB

Release files / django_email_learning-7.16.1.tar.gz

Download URL django_email_learning-7.16.1.tar.gz
Size 1.5 MB
Tags Source
SHA-256 checksum
How to use checksums
208e208de2be59999f6e928cb0371ac7118135e72e1dc2d0ac9bdb8e4a6b4b7a
BLAKE2b-256 checksum
How to use checksums
b5695515590e04d3b2d0dd9de263248e948b651996113506935a640ef872f18f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.13.3 Linux/5.15.167.4-microsoft-standard-WSL2

Release files / django_email_learning-7.16.1-py3-none-any.whl

Download URL django_email_learning-7.16.1-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
72f91a061e44105bc61d2c5c54d7161952a49927470a90008e1a2cff95841c3b
BLAKE2b-256 checksum
How to use checksums
89a4ad012a9cb1f4e25d64c1383505403a12eacc100509604b136e68ad8e2a61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.13.3 Linux/5.15.167.4-microsoft-standard-WSL2

Release history Release notifications | RSS feed

7.20.0

2 release files

7.19.1

2 release files

7.19.0

2 release files

7.18.0

2 release files

7.17.1

2 release files

7.17.0

2 release files

This release

7.16.1 This release

2 release files

7.16.0

2 release files

7.15.1

2 release files

7.15.0

2 release files

7.14.1

2 release files

7.14.0

2 release files

7.13.1

2 release files

7.9.0

2 release files

7.8.2

2 release files

7.8.0

2 release files

7.7.1

2 release files

7.7.0

2 release files

7.6.1

2 release files

7.6.0

2 release files

7.5.0

2 release files

7.4.1

2 release files

7.4.0

2 release files

7.3.1

2 release files

7.3.0

2 release files

7.2.1

2 release files

7.2.0

2 release files

7.1.0

2 release files

7.0.4

2 release files

7.0.3

2 release files

7.0.2

2 release files

7.0.0

2 release files

6.1.0

2 release files

6.0.2

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.5.3

2 release files

5.5.2

2 release files

5.5.1

2 release files

5.5.0

2 release files

5.4.0

2 release files

5.3.0

2 release files

5.2.1

2 release files

5.2.0

2 release files

5.1.2

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.0.0

2 release files

2.15.0

2 release files

2.14.1

2 release files

2.14.0

2 release files

2.13.2

2 release files

2.13.1

2 release files

2.13.0

2 release files

2.12.2

2 release files

2.12.0

2 release files

2.11.1

2 release files

2.11.0

2 release files

2.10.3

2 release files

2.10.2

2 release files

2.10.1

2 release files

2.10.0

2 release files

2.9.0

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.19.0

2 release files

1.18.0

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.14.1

2 release files

1.14.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.5.19

2 release files

0.5.18

2 release files

0.5.17

2 release files

0.5.16

2 release files

0.5.15

2 release files

0.5.14

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.55

2 release files

0.2.54

2 release files

0.2.53

2 release files

0.2.52

2 release files

0.2.51

2 release files

0.2.40

2 release files

0.2.39

2 release files

0.2.38

2 release files

0.2.37

2 release files

0.2.36

2 release files

0.2.35

2 release files

0.2.34

2 release files

0.2.33

2 release files

0.2.32

2 release files

0.2.31

2 release files

0.2.30

2 release files

0.2.29

2 release files

0.2.28

2 release files

0.2.27

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page