neonail-database/test-mail.php
2025-08-10 18:09:07 +02:00

234 lines
8.5 KiB
PHP

<?php
// Test: E-Mail-Konfiguration testen
echo "📧 Test: E-Mail-Konfiguration testen\n";
echo "====================================\n\n";
// 1. E-Mail-Konfiguration prüfen
echo "1. ⚙️ E-Mail-Konfiguration prüfen:\n";
$envPath = '.env';
if (file_exists($envPath)) {
$envContent = file_get_contents($envPath);
$mailSettings = [
'MAIL_MAILER' => 'Mailer',
'MAIL_HOST' => 'Host',
'MAIL_PORT' => 'Port',
'MAIL_USERNAME' => 'Username',
'MAIL_PASSWORD' => 'Password',
'MAIL_ENCRYPTION' => 'Encryption',
'MAIL_FROM_ADDRESS' => 'From Address',
'MAIL_FROM_NAME' => 'From Name'
];
foreach ($mailSettings as $setting => $description) {
if (preg_match("/$setting=(.*)/", $envContent, $matches)) {
$value = trim($matches[1]);
if ($setting === 'MAIL_PASSWORD') {
$value = str_repeat('*', min(strlen($value), 4)) . '...';
}
echo "$description: $value\n";
} else {
echo "$description: Nicht gesetzt\n";
}
}
} else {
echo " ❌ .env Datei nicht gefunden\n";
}
// 2. Laravel Mail-Konfiguration testen
echo "\n2. 🐘 Laravel Mail-Konfiguration testen:\n";
try {
require_once 'vendor/autoload.php';
// Laravel Bootstrap
$app = require_once 'bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
// Mail-Konfiguration abrufen
$mailConfig = config('mail');
echo " 📋 Mail-Konfiguration:\n";
echo " - Default: " . ($mailConfig['default'] ?? 'nicht gesetzt') . "\n";
echo " - Mailers: " . implode(', ', array_keys($mailConfig['mailers'] ?? [])) . "\n";
if (isset($mailConfig['mailers']['smtp'])) {
$smtpConfig = $mailConfig['mailers']['smtp'];
echo " - SMTP Host: " . ($smtpConfig['host'] ?? 'nicht gesetzt') . "\n";
echo " - SMTP Port: " . ($smtpConfig['port'] ?? 'nicht gesetzt') . "\n";
echo " - SMTP Encryption: " . ($smtpConfig['encryption'] ?? 'nicht gesetzt') . "\n";
echo " - SMTP Username: " . ($smtpConfig['username'] ?? 'nicht gesetzt') . "\n";
echo " - SMTP Password: " . (isset($smtpConfig['password']) ? '***' : 'nicht gesetzt') . "\n";
}
} catch (Exception $e) {
echo " ❌ Fehler beim Laden der Mail-Konfiguration: " . $e->getMessage() . "\n";
}
// 3. Test-Mail senden
echo "\n3. 📤 Test-Mail senden...\n";
try {
// Test-E-Mail-Adresse (kann angepasst werden)
$testEmail = 'test@example.com';
echo " 📧 Sende Test-Mail an: $testEmail\n";
// Mail senden
$result = \Illuminate\Support\Facades\Mail::raw('Dies ist eine Test-Mail von der NeoNail Datenbank.
Zeitstempel: ' . now() . '
Server: ' . $_SERVER['SERVER_NAME'] ?? 'Unbekannt' . '
Diese E-Mail wurde automatisch generiert, um die E-Mail-Konfiguration zu testen.
Viele Grüße,
NeoNail DB System', function($message) use ($testEmail) {
$message->to($testEmail)
->subject('Test-Mail: NeoNail DB E-Mail-Konfiguration')
->from(config('mail.from.address'), config('mail.from.name'));
});
echo " ✅ Test-Mail erfolgreich gesendet!\n";
} catch (Exception $e) {
echo " ❌ Fehler beim Senden der Test-Mail: " . $e->getMessage() . "\n";
// Detaillierte Fehleranalyse
echo " 🔍 Fehleranalyse:\n";
if (strpos($e->getMessage(), 'Connection refused') !== false) {
echo " - Problem: Verbindung zum SMTP-Server verweigert\n";
echo " - Lösung: Prüfen Sie MAIL_HOST und MAIL_PORT\n";
} elseif (strpos($e->getMessage(), 'Authentication failed') !== false) {
echo " - Problem: Authentifizierung fehlgeschlagen\n";
echo " - Lösung: Prüfen Sie MAIL_USERNAME und MAIL_PASSWORD\n";
} elseif (strpos($e->getMessage(), 'SSL') !== false) {
echo " - Problem: SSL/TLS Verbindungsproblem\n";
echo " - Lösung: Prüfen Sie MAIL_ENCRYPTION (SSL/TLS)\n";
} else {
echo " - Unbekannter Fehler: " . $e->getMessage() . "\n";
}
}
// 4. Alternative Test-Mail mit SwiftMailer
echo "\n4. 📤 Alternative Test-Mail (SwiftMailer)...\n";
try {
// SwiftMailer direkt testen
$transport = new \Swift_SmtpTransport(
config('mail.mailers.smtp.host'),
config('mail.mailers.smtp.port'),
config('mail.mailers.smtp.encryption')
);
$transport->setUsername(config('mail.mailers.smtp.username'));
$transport->setPassword(config('mail.mailers.smtp.password'));
$mailer = new \Swift_Mailer($transport);
$message = new \Swift_Message('SwiftMailer Test: NeoNail DB');
$message->setFrom([config('mail.from.address') => config('mail.from.name')]);
$message->setTo(['test@example.com' => 'Test User']);
$message->setBody('Dies ist eine SwiftMailer Test-Mail von der NeoNail Datenbank.
Zeitstempel: ' . now() . '
Viele Grüße,
NeoNail DB System');
$result = $mailer->send($message);
if ($result) {
echo " ✅ SwiftMailer Test-Mail erfolgreich gesendet!\n";
} else {
echo " ❌ SwiftMailer Test-Mail fehlgeschlagen\n";
}
} catch (Exception $e) {
echo " ❌ SwiftMailer Fehler: " . $e->getMessage() . "\n";
}
// 5. E-Mail-Template erstellen
echo "\n5. 📝 E-Mail-Template erstellen...\n";
$emailTemplatePath = 'resources/views/emails/test.blade.php';
$emailTemplateContent = '<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>NeoNail DB Test-Mail</title>
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
.container { max-width: 600px; margin: 0 auto; padding: 20px; }
.header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; text-align: center; border-radius: 10px 10px 0 0; }
.content { background: #f9f9f9; padding: 20px; border-radius: 0 0 10px 10px; }
.footer { text-align: center; margin-top: 20px; color: #666; font-size: 12px; }
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>🎨 NeoNail DB</h1>
<p>E-Mail-Konfiguration Test</p>
</div>
<div class="content">
<h2>✅ E-Mail-Konfiguration erfolgreich!</h2>
<p>Hallo,</p>
<p>dies ist eine Test-Mail von der NeoNail Datenbank. Die E-Mail-Konfiguration funktioniert korrekt!</p>
<h3>📋 Test-Details:</h3>
<ul>
<li><strong>Zeitstempel:</strong> {{ now() }}</li>
<li><strong>Server:</strong> {{ $_SERVER["SERVER_NAME"] ?? "Unbekannt" }}</li>
<li><strong>Mailer:</strong> {{ config("mail.default") }}</li>
<li><strong>Host:</strong> {{ config("mail.mailers.smtp.host") }}</li>
</ul>
<p>Die E-Mail-Funktionalität ist jetzt bereit für Benachrichtigungen und Passwort-Reset.</p>
</div>
<div class="footer">
<p>Diese E-Mail wurde automatisch generiert von der NeoNail DB</p>
<p>© {{ date("Y") }} NeoNail DB System</p>
</div>
</div>
</body>
</html>';
// Template-Verzeichnis erstellen
$emailDir = 'resources/views/emails';
if (!is_dir($emailDir)) {
mkdir($emailDir, 0755, true);
echo " ✅ E-Mail-Verzeichnis erstellt: $emailDir\n";
}
file_put_contents($emailTemplatePath, $emailTemplateContent);
echo " ✅ E-Mail-Template erstellt: $emailTemplatePath\n";
// 6. Template-Mail senden
echo "\n6. 📤 Template-Mail senden...\n";
try {
$result = \Illuminate\Support\Facades\Mail::send('emails.test', [], function($message) {
$message->to('test@example.com')
->subject('Template Test: NeoNail DB')
->from(config('mail.from.address'), config('mail.from.name'));
});
echo " ✅ Template-Mail erfolgreich gesendet!\n";
} catch (Exception $e) {
echo " ❌ Template-Mail Fehler: " . $e->getMessage() . "\n";
}
echo "\n✅ E-Mail-Test abgeschlossen!\n";
echo "📋 Nächste Schritte:\n";
echo "1. Prüfen Sie Ihr E-Mail-Postfach (test@example.com)\n";
echo "2. Falls keine E-Mail ankommt, prüfen Sie Spam-Ordner\n";
echo "3. Falls Fehler auftreten, prüfen Sie die SMTP-Einstellungen\n";
echo "4. Für echte Tests, ändern Sie die E-Mail-Adresse im Script\n";
echo "\n🔗 E-Mail-Funktionen sind jetzt verfügbar für:\n";
echo "- Passwort-Reset\n";
echo "- Benutzer-Benachrichtigungen\n";
echo "- Admin-Benachrichtigungen\n";
?>