Wie kann ich in PHP mit mail() den richtigen Absender festlegen? SMTP
Versendet Ihre Website E-Mails mit der PHP-Funktion mail(), dann geht die E-Mail ohne Anmeldung hinaus. Der technische Absender (Return-Path) ist dann oft das Systemkonto Ihres Pakets und nicht Ihre eigene Adresse. Dadurch stimmen SPF und DMARC nicht richtig, die E-Mail landet häufiger im Spam und Fehlermeldungen gehen an ein Postfach, in das niemand schaut.
Lassen Sie Ihre Website deshalb über SMTP mit Anmeldung mailen, genau wie Ihr E-Mail-Programm. Dann ist Ihre eigene Adresse der Absender und die E-Mail wird wie eine normale E-Mail Ihrer Domain behandelt.
Die Zugangsdaten für SMTP
- Server: Ihr Domainname (ihredomain.nl), wenn Ihre Website bei WebOké liegt, oder der Servername Ihres Pakets, zum Beispiel linux2023.webawere.nl. Diesen finden Sie in Mein WebOké unter Meine Produkte in der Spalte Server.
- Port: 465 mit SSL/TLS oder 587 mit STARTTLS.
- Benutzername: die vollständige E-Mail-Adresse eines Postfachs, am besten ein separates Postfach für die Website, zum Beispiel website@ihredomain.nl.
- Passwort: das Passwort dieses Postfachs.
Verwenden Sie als Absender (From) die Adresse dieses Postfachs oder eine Weiterleitung, die dorthin weiterleitet. Die Adresse eines Besuchers setzen Sie nie in From, sondern in Reply-To. Andernfalls lehnt der Server die E-Mail ab oder sie landet im Spam.
Beispiel mit PHPMailer
Eine häufig verwendete Bibliothek ist PHPMailer. Sie installieren sie mit Composer (composer require phpmailer/phpmailer).
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// SMTP-instellingen
$mail->isSMTP();
$mail->Host = 'jouwdomein.nl';
$mail->Port = 465;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->SMTPAuth = true;
$mail->Username = 'website@jouwdomein.nl';
$mail->Password = 'wachtwoord';
$mail->CharSet = 'UTF-8';
// Afzender, antwoordadres en ontvanger
$mail->setFrom('website@jouwdomein.nl', 'Website jouwdomein.nl');
$mail->addReplyTo('bezoeker@example.net');
$mail->addAddress('info@jouwdomein.nl');
// Bericht
$mail->Subject = 'Testbericht';
$mail->Body = 'Dit is een testmail verzonden via SMTP.';
$mail->send();
echo 'E-mail verzonden';
} catch (Exception $e) {
echo 'Versturen mislukt: ' . $mail->ErrorInfo;
}
Verwenden Sie WordPress oder WooCommerce? Dann regeln Sie dies mit einem SMTP-Plugin, siehe E-Mails aus WordPress und WooCommerce zuverlässig über SMTP versenden. Wie Sie ein Formular vor Spam schützen, lesen Sie in Ein Kontaktformular auf Ihrer Website: Felder per E-Mail versenden und Spam verhindern.
Möchten Sie mehr erfahren? Besuchen Sie den kostenlosen Kurs E-Mail im Griff, Lektion 7.3 E-Mails von Ihrer Website und Formulare.
Möchten Sie mehr erfahren? Besuchen Sie den kostenlosen WordPress-Kurs, Lektion 9.1 E-Mail aus WordPress.
