mail-organizer/scripts/Test-Connection.ps1

86 lines
2.8 KiB
PowerShell

#Requires -Version 5.1
<#
.SYNOPSIS
Testet die Verbindung zur Microsoft Graph API.
.DESCRIPTION
Laedt die Konfiguration und versucht, die letzten 5 E-Mails abzurufen.
Dient zur Validierung der Azure App Registration.
#>
param(
[string]$ConfigPath = (Join-Path $PSScriptRoot "..\config")
)
$scriptRoot = $PSScriptRoot
Import-Module (Join-Path $scriptRoot "Logger.psm1") -Force
Import-Module (Join-Path $scriptRoot "GraphHelper.psm1") -Force
# Logger initialisieren
$logDir = Join-Path (Split-Path $ConfigPath -Parent) "logs"
Initialize-Logger -LogDirectory $logDir -Level "Debug"
# Settings laden
$settingsFile = Join-Path $ConfigPath "settings.json"
if (-not (Test-Path $settingsFile)) {
Write-Host "FEHLER: $settingsFile nicht gefunden!" -ForegroundColor Red
Write-Host "Bitte zuerst die Azure App Registration einrichten." -ForegroundColor Yellow
Write-Host "Anleitung: docs\Azure-App-Registration-Anleitung.md" -ForegroundColor Yellow
exit 1
}
$settings = Get-Content $settingsFile -Raw | ConvertFrom-Json
$settingsHash = @{
TenantId = $settings.TenantId
ClientId = $settings.ClientId
ClientSecret = $settings.ClientSecret
MailboxUser = $settings.MailboxUser
}
Write-Host "`n=== Mail-Organizer Verbindungstest ===" -ForegroundColor Cyan
Write-Host "Tenant: $($settings.TenantId)"
Write-Host "Client: $($settings.ClientId)"
Write-Host "Mailbox: $($settings.MailboxUser)"
Write-Host ""
# Test 1: Token holen
Write-Host "1. Token anfordern... " -NoNewline
try {
$token = Get-GraphToken -Settings $settingsHash
Write-Host "OK" -ForegroundColor Green
}
catch {
Write-Host "FEHLER" -ForegroundColor Red
Write-Host " $_" -ForegroundColor Red
Write-Host "`nPruefe TenantId, ClientId und ClientSecret in settings.json" -ForegroundColor Yellow
exit 1
}
# Test 2: E-Mails abrufen
Write-Host "2. E-Mails abrufen... " -NoNewline
try {
$messages = Get-MailMessages -Settings $settingsHash -Top 5
$count = @($messages.value).Count
Write-Host "OK ($count E-Mails)" -ForegroundColor Green
}
catch {
Write-Host "FEHLER" -ForegroundColor Red
Write-Host " $_" -ForegroundColor Red
Write-Host "`nPruefe die API-Berechtigungen (Mail.Read) und Admin Consent" -ForegroundColor Yellow
exit 1
}
# Ergebnis anzeigen
if ($count -gt 0) {
Write-Host "`nLetzte E-Mails:" -ForegroundColor Cyan
foreach ($msg in $messages.value) {
$date = ([DateTime]$msg.receivedDateTime).ToString("dd.MM.yyyy HH:mm")
$from = $msg.from.emailAddress.address
$cats = if ($msg.categories) { " [$($msg.categories -join ', ')]" } else { "" }
Write-Host " $date | $from | $($msg.subject)$cats"
}
}
Write-Host "`n=== Verbindungstest erfolgreich! ===" -ForegroundColor Green
Write-Host "Du kannst jetzt Regeln in config\rules.json anlegen."
Write-Host "Starte mit: .\Process-MailRules.ps1 -DryRun`n"