PHPMailer Debug Template
Kategori
debug
Status
Guld
Bruges til
Denne prompt bruges når TuxCore skal fejlfinde PHPMailer, SMTP, Simply.com mailopsætning, login-koder, invitationer, password reset eller admin-mails.
Den er god til:
- PHPMailer sender ikke
- SMTP connect failed
- Authentication failed
- Class PHPMailer not found
- Forkert
vendor/autoload.php - Forkert
mail_config.php - Mails lander i spam
- Login-koder/invitationer kommer ikke frem
- Mail virker i ét projekt men ikke i et andet
- Simply.com / SMTP2GO / ekstern SMTP
Prompt
$mail $php $debug
Jeg har et PHPMailer/mail-problem.
## Problem
[Beskriv hvad der ikke virker]
## Fejlbesked
Indsæt fejl her:
[indsæt PHPMailer error / PHP error / serverlog]
## Filstruktur
[indsæt relevant filstruktur]
## Mail config placering
[fx ../mail_config.php eller /home/user/mail_config.php]
## Composer/PHPMailer placering
[fx ../vendor/autoload.php]
## Relevant kode
[indsæt relevant mailer.php / send-funktion / include-kode]
## Hosting/miljø
- Hosting: [Simply.com / Docker / lokal / andet]
- SMTP host: [indsæt host uden password]
- SMTP port: [587/465/andet]
- Kryptering: [STARTTLS/SSL/andet]
- PHPMailer via Composer: [ja/nej/ved ikke]
## Det jeg vil have
Svar med:
1. Hvad fejlen betyder.
2. Mest sandsynlige årsag.
3. Hvilke include-stier der skal tjekkes.
4. Om SMTP-konfigurationen ser rigtig ud.
5. Præcis rettelse.
6. Testfil hvis relevant.
7. Hvad jeg skal slette igen efter test.
Regler:
- Gentag aldrig SMTP-passwords, tokens eller secrets.
- Brug PHPMailer via Composer autoload.
- Brug ikke PHP `mail()` som løsning.
- Gør svaret copy/paste-klar.
- Antag Simply.com-venlig PHP når intet andet er nævnt.
Eksempel på brug
$mail $php $debug
Reset password sender ikke mail på RU-Teknik portalen.
PHPMailer ligger globalt i ../vendor/autoload.php.
Mail config ligger i ../mail_config.php.
Her er fejlbeskeden og mailer.php.
Forventet output
Et godt svar bør indeholde:
- Kort forklaring af mail-fejlen
- Include-path kontrol
- SMTP-konfiguration kontrol
- Minimal testfil
- Rettet mailfunktion hvis nødvendigt
- Sikkerhed omkring secrets
- Forslag til server-side logging
- Besked om at slette testfilen bagefter
Standard testfil
<?php
declare(strict_types=1);
ini_set('display_errors', '1');
error_reporting(E_ALL);
require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../mail_config.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = MAIL_HOST;
$mail->SMTPAuth = true;
$mail->Username = MAIL_USERNAME;
$mail->Password = MAIL_PASSWORD;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = MAIL_PORT;
$mail->CharSet = 'UTF-8';
$mail->setFrom(MAIL_FROM_EMAIL, MAIL_FROM_NAME);
$mail->addReplyTo(MAIL_REPLY_TO, MAIL_FROM_NAME);
$mail->addAddress('test@example.dk');
$mail->isHTML(true);
$mail->Subject = 'PHPMailer test';
$mail->Body = '<p>Dette er en testmail.</p>';
$mail->AltBody = 'Dette er en testmail.';
$mail->send();
echo 'OK: Mail sendt';
} catch (Exception $e) {
echo 'FEJL: ' . htmlspecialchars($mail->ErrorInfo ?: $e->getMessage(), ENT_QUOTES, 'UTF-8');
}
Typiske fejl
Class PHPMailer not found
Mulige årsager:
- Forkert sti til
vendor/autoload.php - Composer er ikke installeret
- PHPMailer ligger ikke hvor projektet tror
- Projektet ligger i en undermappe og
../er forkert
Fix:
- Find den rigtige
vendor/autoload.php - Brug
__DIR__ - Test med
file_exists()
Eksempel:
$autoload = __DIR__ . '/../vendor/autoload.php';
if (!file_exists($autoload)) {
exit('Autoload ikke fundet: ' . htmlspecialchars($autoload, ENT_QUOTES, 'UTF-8'));
}
require_once $autoload;
SMTP connect failed
Mulige årsager:
- Forkert SMTP host
- Forkert port
- Forkert kryptering
- Hosting blokerer forbindelsen
- DNS/netværk problem
Typiske kombinationer:
Port 587 = STARTTLS
Port 465 = SMTPS/SSL
Authentication failed
Mulige årsager:
- Forkert brugernavn
- Forkert password
- Kontoen må ikke sende via SMTP
- SMTP-udbyderen kræver app-password/API-token
- From-adressen matcher ikke kontoen
Fix:
- Tjek SMTP login
- Tjek senderadresse
- Tjek om kontoen må sende
- Lav minimal testfil
Mail sendes men modtages ikke
Mulige årsager:
- Spamfilter
- Forkert SPF/DKIM/DMARC
- From-domæne matcher ikke SMTP
- Modtager blokerer
- Mail havner i junk
Fix:
- Tjek spam/junk
- Tjek DNS records
- Brug korrekt From
- Brug Reply-To korrekt
Virker i ét projekt men ikke i et andet
Mulige årsager:
- Forkert relativ sti
- Anden mappeplacering
mail_config.phpfindes ikke fra den aktuelle fil- Projektet bruger anden autoload
Fix:
- Print/test
__DIR__ - Brug absolut eller korrekt relativ sti
- Lav
file_exists()check på includes
Sikkerhedsregler
- SMTP-password må aldrig ligge i public repo.
- SMTP-password må aldrig printes i browser.
- Testfiler skal slettes efter brug.
- Mail-debug må ikke være aktiv i produktion.
- Brug server-side logging fremfor at vise tekniske detaljer til brugere.
- Valider email-adresser før sending.
Tags
phpmailer, mail, smtp, simply, debug, php, composer, tuxcore