Laravel-Paket für Messages-Verwaltung
- IMAP-E-Mail-Verwaltung im AkV-Projektverwaltungssystem: Ermöglicht eingeloggten Benutzern, mehrere IMAP-Accounts zu verwalten und deren Postfächer, Ordner und Nachrichten im Browser zu lesen.
- SIP-Account-Verwaltung
| Abhängigkeit | Version |
|---|---|
| PHP | ^8.4 |
| Laravel | ^13 |
| webklex/laravel-imap | ^6.2 |
| mews/purifier | ^3.4 |
Das Paket ist über die autoload-Sektion in composer.json des Hauptprojekts eingebunden – kein separates composer require nötig.
1. Service Provider in bootstrap/providers.php eintragen (bereits erledigt):
Nfgarching\Mails\LibraryServiceProvider::class,2. Migration ausführen:
php artisan migrate --path=packages/nfgarching/mails/database/migrations/2026_05_08_000001_create_mail_accounts_table.phpOder nach database/migrations/ kopieren und php artisan migrate ausführen.
3. Policy ist über AppServiceProvider registriert:
Gate::policy(MailAccount::class, MailAccountPolicy::class);- CRUD für IMAP-Zugangsdaten pro User
- Passwörter werden verschlüsselt gespeichert (
encryptedCast) - „Verbindung testen"-Button via AJAX vor dem Speichern
- Jeder User sieht und verwaltet nur seine eigenen Accounts (Policy)
- Ordner-Hierarchie eines Accounts browsen
- Nachrichten paginiert anzeigen (25 pro Seite, neueste zuerst)
- Einzelne Mail lesen – HTML wird durch
mews/purifiersanitiert - Anhänge herunterladen
| Methode | URL | Route-Name | Beschreibung |
|---|---|---|---|
| GET | /mail-accounts |
mail-accounts.index |
Account-Liste |
| GET | /mail-accounts/create |
mail-accounts.create |
Formular anlegen |
| POST | /mail-accounts |
mail-accounts.store |
Speichern |
| GET | /mail-accounts/{id}/edit |
mail-accounts.edit |
Formular bearbeiten |
| PUT | /mail-accounts/{id} |
mail-accounts.update |
Aktualisieren |
| DELETE | /mail-accounts/{id} |
mail-accounts.destroy |
Löschen |
| POST | /mail-accounts/{id}/test |
mail-accounts.test |
Verbindungstest (JSON) |
| Methode | URL | Route-Name | Beschreibung |
|---|---|---|---|
| GET | /mail/{account} |
mail.folders |
Ordner-Übersicht |
| GET | /mail/{account}/folder/{folder} |
mail.messages |
Nachrichten-Liste |
| GET | /mail/{account}/folder/{folder}/{uid} |
mail.show |
Einzelne Nachricht |
| GET | /mail/{account}/folder/{folder}/{uid}/attachment/{index} |
mail.attachment |
Anhang herunterladen |
Alle Routen erfordern auth Middleware.
src/
├── Controllers/
│ ├── MailAccountController.php CRUD für Mail-Accounts
│ └── MailBrowserController.php IMAP-Browser (Ordner, Mails, Anhänge)
├── Models/
│ └── MailAccount.php Eloquent-Model mit encrypted password
├── Policies/
│ └── MailAccountPolicy.php Zugriffsschutz (nur eigene Accounts)
├── Requests/
│ ├── StoreMailAccountRequest.php Validierung Create
│ └── UpdateMailAccountRequest.php Validierung Update
├── Services/
│ └── ImapService.php IMAP-Logik, Connection-Cache
└── Views/
├── mail-accounts/ CRUD-Views
└── mail-browser/ Browser-Views
database/
├── factories/
│ └── MailAccountFactory.php
└── migrations/
└── 2026_05_08_000001_create_mail_accounts_table.php