# Outlook E-Mail Konfiguration für Symfony

## 1. .env Datei anpassen

Ersetze die `MAILER_DSN` Zeile in deiner `.env` oder `.env.local` Datei mit folgender Konfiguration:

### Für Microsoft 365 / Outlook.com:

```bash
# Outlook/Microsoft 365 SMTP
MAILER_DSN=smtp://DEINE_OUTLOOK_EMAIL:DEIN_APP_PASSWORD@smtp-mail.outlook.com:587
MAILER_FROM=DEINE_OUTLOOK_EMAIL
```

**Beispiel:**
```bash
MAILER_DSN=smtp://info@bewegungszentrum-dueren.de:abcd1234efgh5678@smtp-mail.outlook.com:587
MAILER_FROM=info@bewegungszentrum-dueren.de
```

## 2. App-Passwort erstellen (falls 2FA aktiviert ist)

**Wichtig:** Wenn dein Outlook-Konto 2-Faktor-Authentifizierung (2FA) aktiviert hat, benötigst du ein App-Passwort!

### So erstellst du ein App-Passwort:

1. Gehe zu: https://account.microsoft.com/security
2. Klicke auf **"Erweiterte Sicherheitsoptionen"**
3. Unter **"App-Kennwörter"** → **"Neues App-Kennwort erstellen"**
4. Name eingeben: z.B. "Symfony Mailer"
5. Kopiere das generierte Passwort (z.B. `abcd1234efgh5678`)
6. Verwende dieses Passwort in der `MAILER_DSN`

## 3. Ohne 2FA (normale Authentifizierung)

Falls **keine 2FA** aktiviert ist, kannst du dein normales Passwort verwenden:

```bash
MAILER_DSN=smtp://info@bewegungszentrum-dueren.de:DEIN_NORMALES_PASSWORT@smtp-mail.outlook.com:587
```

**⚠️ Sicherheitshinweis:** Aktiviere 2FA und verwende App-Passwörter für bessere Sicherheit!

## 4. Outlook SMTP Settings

- **SMTP Server:** `smtp-mail.outlook.com` oder `smtp.office365.com`
- **Port:** `587` (TLS/STARTTLS) oder `25`
- **Verschlüsselung:** STARTTLS
- **Authentifizierung:** Ja (mit E-Mail + Passwort/App-Passwort)

## 5. Für Custom Domain mit Microsoft 365

Falls du eine eigene Domain mit Microsoft 365 verwendest (z.B. @bewegungszentrum-dueren.de):

```bash
MAILER_DSN=smtp://deine-email@deine-domain.de:APP_PASSWORD@smtp.office365.com:587
```

## 6. URL-Encoding für Sonderzeichen

Falls dein Passwort Sonderzeichen enthält, müssen diese URL-encoded werden:

| Zeichen | Encoded |
|---------|---------|
| `@`     | `%40`   |
| `:`     | `%3A`   |
| `/`     | `%2F`   |
| `?`     | `%3F`   |
| `#`     | `%23`   |
| `&`     | `%26`   |
| `=`     | `%3D`   |
| `+`     | `%2B`   |
| ` `     | `%20`   |

**Beispiel:**
- Passwort: `Pass@word:123`
- Encoded: `Pass%40word%3A123`

## 7. Test-Befehl

Nach der Konfiguration teste die E-Mail-Funktion:

```bash
# Cache leeren
php bin/console cache:clear

# Test-E-Mail senden (wenn implementiert)
php bin/console app:test-email deine-test@email.de
```

## 8. Fehlerbehebung

### Fehler: "535 Authentication failed"
- ✅ Überprüfe E-Mail-Adresse und Passwort
- ✅ Verwende App-Passwort statt normalem Passwort (bei 2FA)
- ✅ Stelle sicher, dass SMTP-Zugriff in Outlook aktiviert ist

### Fehler: "Could not connect to host"
- ✅ Überprüfe Firewall-Einstellungen
- ✅ Port 587 muss offen sein
- ✅ Versuche Alternative: `smtp.office365.com`

### Fehler: "Relay access denied"
- ✅ Authentifizierung muss aktiviert sein
- ✅ Verwende die richtige E-Mail-Adresse als Absender

## 9. .env.local Beispiel (komplett)

```bash
# Database
DATABASE_URL="mysql://user:password@127.0.0.1:3306/dbname"

# Mailer (Outlook)
MAILER_DSN=smtp://info@bewegungszentrum-dueren.de:YOUR_APP_PASSWORD@smtp-mail.outlook.com:587
MAILER_FROM=info@bewegungszentrum-dueren.de

# Admin Email (für Benachrichtigungen)
ADMIN_EMAIL=info@bewegungszentrum-dueren.de

# App Environment
APP_ENV=prod
APP_SECRET=your-secret-key
```

## 10. Alternativen zu Port 587

Falls Port 587 blockiert ist:

```bash
# Port 25 (SMTP ohne Verschlüsselung - nicht empfohlen)
MAILER_DSN=smtp://EMAIL:PASSWORD@smtp-mail.outlook.com:25

# Port 465 (SSL - veraltet, wird nicht von Outlook unterstützt)
# NICHT VERWENDEN!
```

---

## 11. Separater Outlook-Kalender für Bewegungszentrum / Geburtstage (Ehrentag)

Für **Bewegungszentrum** und **Geburtstage** kann ein **eigener Outlook-Kalender** genutzt werden (unabhängig vom Kalender z. B. von mobi@ksb-dueren.de oder buchung@ksb-dueren.de).

### So funktioniert es

- Unter **Admin → Outlook Integration** können **mehrere** Outlook-Konten verbunden werden (z. B. mobi@, buchung@, ein Konto nur für Event Center).
- **Ohne** weitere Konfiguration nutzt das System für Event Center die **erste** aktive Outlook-Synchronisation in der Datenbank (ältere Verbindung zuerst). Das kann z. B. mobi@ksb-dueren.de sein, wenn dieses Konto zuerst verbunden wurde.
- **Mit** der optionalen Umgebungsvariable **EVENT_CENTER_OUTLOOK_EMAIL** wird für Bewegungszentrum/Geburtstage **genau dieses** Konto verwendet (Slots, Buchungen, Sync).

### Schritte für einen eigenen Kalender für Bewegungszentrum/Geburtstage

1. **Neues Konto verbinden**  
   Unter **Admin → Outlook Integration** das gewünschte Konto (z. B. bewegungszentrum@ksb-dueren.de oder ein gemeinsames Geburtstage-Konto) per OAuth anbinden. Es erscheint dann als weitere aktive Synchronisation.

2. **.env setzen**  
   In `.env` oder `.env.local` eintragen:
   ```bash
   EVENT_CENTER_OUTLOOK_EMAIL=bewegungszentrum@ksb-dueren.de
   ```
   (E-Mail-Adresse durch die tatsächlich verbundene ersetzen.)

3. **Cache leeren**  
   `php bin/console cache:clear`

Danach nutzen **Slots, Buchungen und Outlook-Sync** für Bewegungszentrum/Geburtstage dieses Konto; andere Bereiche (z. B. Kurse/mobi@) bleiben unverändert.

### Kurzüberblick

| Konfiguration | Verhalten für Event Center |
|---------------|----------------------------|
| `EVENT_CENTER_OUTLOOK_EMAIL` **nicht** gesetzt | Erste aktive Outlook-Sync aus der DB (z. B. mobi@, wenn zuerst verbunden). |
| `EVENT_CENTER_OUTLOOK_EMAIL=…` gesetzt | Immer das angegebene Konto; es muss unter Outlook Integration verbunden sein. |

---

## Nächster Schritt

Nachdem die E-Mail-Konfiguration funktioniert, können wir das Event Center E-Mail-Template-System implementieren! 🚀





