Inhaltsverzeichnis
- Moderne E-Mail-Authentifizierung für Django-Anwendungen
- Ausgangslage: Mailversand mit django-exchange
- Technisches Fundament: python-o365
- Architektur & Funktionsweise
- Verwendung in Django
- Open Source & Ausblick
Über den Autor
11.02.2026
Open Source, OAuth 2.0 und Microsoft 365django-o365: Ein modernes Mailbackend für Django und Exchange Online
django-o365 ist ein Open-Source Mailbackend für Django, das den Versand von E-Mails über Exchange Online mit OAuth 2.0 ermöglicht. Entstanden aus realen Projektanforderungen, richtet sich das Paket an Teams, die Microsoft 365 einsetzen und ihren E-Mail-Versand sicher, wartbar und ohne Workarounds umsetzen möchten. Dieser Artikel gibt einen Überblick über Motivation, Funktionsumfang und Einsatz.
Moderne E-Mail-Authentifizierung für Django-Anwendungen
E-Mails sind ein zentraler Bestandteil vieler Webanwendungen – und genau deshalb besonders kritisch, wenn sie nicht zuverlässig funktionieren. Viele Unternehmen setzen dabei auf Microsoft 365 und Exchange Online, während klassische SMTP-Authentifizierung zunehmend eingeschränkt oder ganz abgeschaltet wird. OAuth 2.0 ist inzwischen der empfohlene Standard.
Mit django-o365 haben wir ein Mailbackend für Django entwickelt, das den Versand von E-Mails über Exchange Online mit OAuth-2.0-Authentifizierung ermöglicht und sich nahtlos in den bestehenden Django-Mail-Workflow integriert. In diesem Beitrag zeigen wir, auf welchen Bausteinen es aufsetzt und wie du es in deinem eigenen Projekt einsetzen kannst.
Ausgangslage: Mailversand mit django-exchange
In einem Bestandsprojekt eines unserer Kunden wurde der Mailversand bisher mit einem lokalen Postfach via Microsoft Exchange realisiert. Zu diesem Zweck haben wir damals das Paket django-exchange entwickelt. Das Postfach wurde nun zu Exchange Online mit OAuth 2.0 Authentifizierung migriert. Da es für Django noch kein geeignetes Paket gab, haben wir django-o365 entwickelt. Unsere größte Motivation dafür war eine saubere Django-Integration, sodass wir in unserem Projekt lediglich das Email-Backend austauschen müssen.
Technisches Fundament: python-o365
Als technisches Fundament setzt django-o365 auf das etablierte Python-Paket python-o365. Dieses stellt eine vollständige Abstraktion der Microsoft-Graph-API bereit und übernimmt unter anderem die Authentifizierung via OAuth 2.0 sowie den eigentlichen Versand der E-Mails über Exchange Online.
django-o365 nutzt python-o365 gezielt als Transport-Schicht, kapselt dessen Funktionalität jedoch vollständig hinter dem bekannten Django-Mail-Interface. So profitieren wir von einer stabilen und aktiv gepflegten Basis, ohne diese direkt im Anwendungscode verwenden zu müssen.
Auf eine eigene Implementierung der Microsoft-Graph-API haben wir bewusst verzichtet: python-o365 deckt den benötigten Funktionsumfang bereits zuverlässig ab und erlaubt es uns, den Fokus auf eine saubere Django-Integration, Wartbarkeit und einfache Nutzung zu legen.
Architektur & Funktionsweise
django-o365 ist bewusst schlank aufgebaut und folgt dem Prinzip, sich nahtlos in bestehende Django-Strukturen einzufügen. Kern des Pakets ist ein eigenes Django-Mailbackend, das die standardisierte Django-Mail-API implementiert. Sobald Django eine E-Mail versendet, übernimmt django-o365 die Übergabe an python-o365, welches wiederum den Versand über die Microsoft Graph API abwickelt.
Die Authentifizierung erfolgt vollständig über OAuth 2.0. Access- und Refresh-Tokens werden dabei von python-o365 verwaltet und erneuert, ohne dass der Anwendungscode davon etwas mitbekommt. django-o365 fungiert somit als Bindeglied zwischen Django und Exchange Online: Es übersetzt Djangos Mailversand in Graph-API-Aufrufe, ohne zusätzliche Logik in der Anwendung zu erzwingen.
Diese klare Trennung hat zwei Vorteile: Zum einen bleibt der Django-Code unverändert und unabhängig von Microsoft-spezifischen Details, zum anderen können wir auf eine bewährte Bibliothek für die komplexe OAuth- und API-Logik zurückgreifen.
Verwendung in Django
Da django-o365 aktuell noch nicht auf PyPI veröffentlicht ist, wird es direkt aus dem Git-Repository eingebunden, z.B. über die requirements.txt. Weitere Abhängigkeiten, insbesondere python-o365, werden automatisch mitinstalliert.
Auf Microsoft-Seite ist eine App-Registrierung in Microsoft Entra ID (ehemals Azure AD) erforderlich. Dort wird eine Anwendung angelegt, die die Berechtigung zum Versand von E-Mails über Microsoft Graph erhält (z.B. Mail.Send). Für die OAuth-Authentifizierung werden eine Client-ID, ein Client-Secret sowie der Tenant benötigt. Zusätzlich muss festgelegt werden, ob der Versand über ein Benutzerkonto oder ein Shared Mailbox Postfach erfolgen soll.
In Django beschränkt sich die Konfiguration auf die Settings. Dort wird lediglich das Mailbackend auf django-o365 umgestellt und die benötigten Zugangsdaten hinterlegt:
EMAIL_O365_TENANT_ID = 'my-tenant-id'
EMAIL_O365_CLIENT_ID = 'my-client-id'
EMAIL_O365_CLIENT_SECRET = 'my-super-secret'
EMAIL_O365_SENDER = 'mysender@example.com'
# set backend
EMAIL_BACKEND = 'django_o365.backend.O365EmailBackend'
Am eigentlichen Anwendungscode muss nichts geändert werden. Bestehende Aufrufe von send_mail, EmailMessage oder EmailMultiAlternatives funktionieren weiterhin unverändert. Der Wechsel auf Exchange Online mit OAuth 2.0 erfolgt ausschließlich über Konfiguration – genau das war eines der zentralen Ziele bei der Entwicklung von django-o365.
Open Source & Ausblick
Wir bei Blueshoe sind überzeugt vom Open Source Ansatz. Somit ist django-o365 selbstverständlich als Open-Source-Projekt konzipiert und wird offen auf GitHub entwickelt. Der aktuelle Fokus liegt bewusst auf einem klaren, stabilen Kern: dem zuverlässigen Mailversand über Exchange Online mit OAuth-2.0-Authentifizierung im Credentials-Workflow. Der Versand von E-Mails inklusive Anhängen wird bereits vollständig unterstützt und deckt damit die gängigen Anwendungsfälle in Webprojekten ab.
Für die Zukunft sind weitere Authentifizierungs-Workflows denkbar, etwa stärker benutzerbezogene Szenarien. Der Anspruch bleibt dabei derselbe: eine saubere Django-Integration ohne unnötige Komplexität im Anwendungscode. Feedback, Anregungen und Beiträge aus der Community sind ausdrücklich willkommen – sie helfen dabei, das Paket gezielt weiterzuentwickeln und praxisnah zu halten.
Hast du noch Fragen oder eine Meinung? Mit deinem GitHub Account kannst Du es uns wissen lassen...
Was unsere Kunden über uns sagen
- Ofa Bamberg GmbHB2B Online-Shop | B2C Website | Hosting | Betreuung | Security© Ofa Bamberg GmbH
- Ludwig-Maximilians-Universität MünchenPlattformentwicklung | Hosting | Betreuung | APIs | Website
Blueshoe hat unsere Forschungsdatenplattform Munich Media Monitoring (M3) entwickelt und uns hervorragend dabei beraten. Das Team hat unsere Anforderungen genau verstanden und sich aktiv in die Ausgestaltung der Software und der Betriebsumgebung eingebracht. Wir sind froh, dass auch Wartung und weiterführender Support in Blueshoes Händen liegen.
- Deutsches MuseumDigitalisierung | Beratung | Datenbank-Optimierung | GraphQL | CMSFoto: Anne Göttlicher
Im Rahmen eines komplexen Digitalisierungsprojekts für unsere Exponate-Datenbank war Blueshoe ein äußerst verlässlicher Partner. Sie haben uns nicht nur während des gesamten Projekts hervorragend beraten, sondern unsere Anforderungen perfekt umgesetzt. Dank ihrer Arbeit ist unsere Datenbank nun ein bedeutender Mehrwert für die weltweite wissenschaftliche Forschung.
- Fonds Finanz Maklerservice GmbHPlattformentwicklung | Prozess-Systeme | Hosting | Betreuung | Zertifikate | Website© Fonds Finanz Maklerservice GmbH
Blueshoe ist unsere verlängerte Werkbank für Entwicklung, Wartung und Support unserer Weiterbildungs- und Zertifizierungsplattformen. Das Team hat sich gründlich in unsere Abläufe eingearbeitet, und wir freuen uns, Blueshoe als zuverlässigen Partner an unserer Seite zu haben.
- Technische Universität HamburgPlattformentwicklung | Beratung | Prozess-Systeme | Hosting | Website
Seit 2019 unterstützt uns die Blueshoe GmbH tatkräftig bei der Entwicklung und Weiterentwicklung des "Digital Learning Lab" und der "Digital Learning Tools". Dank ihrer Beratung konnten wir von Anfang an auf eine zukunftssichere, moderne technische Struktur setzen. Die Zusammenarbeit ist reibungslos, und wir fühlen uns rundum gut betreut. Und davon profitieren dann auch die Lehrkräfte in Hamburg.






















