Hvordan får jeg den rigtige afsender i php med mail()? smtp
Sender din hjemmeside mail med PHP-funktionen mail(), bliver mailen sendt uden login. Den tekniske afsender (Return-Path) er så ofte systemkontoen for din pakke og ikke din egen adresse. Derfor stemmer SPF og DMARC ikke, mailen havner oftere i spam, og fejlmeddelelser ender i en mailboks, som ingen holder øje med.
Lad derfor din hjemmeside sende mail via SMTP med login, ligesom dit mailprogram. Så er din egen adresse afsender, og mailen bliver behandlet som almindelig mail fra dit domæne.
Oplysninger til SMTP
- Server: dit domænenavn (jouwdomein.nl), hvis din hjemmeside ligger hos WebOké, eller servernavnet for din pakke, fx linux2023.webawere.nl. Du finder det i Mit WebOké under Mine produkter i kolonnen Server.
- Port: 465 med SSL/TLS eller 587 med STARTTLS.
- Brugernavn: den fulde e-mailadresse for en mailboks, helst en separat mailboks til hjemmesiden, fx website@jouwdomein.nl.
- Adgangskode: adgangskoden til den mailboks.
Brug mailboksens adresse som afsender (From) eller en forwarder, der videresender til den. En besøgendes adresse sætter du aldrig i From, men i Reply-To. Ellers afviser serveren mailen, eller den havner i spam.
Eksempel med PHPMailer
Et meget brugt bibliotek er PHPMailer. Du installerer det med 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;
}
Bruger du WordPress eller WooCommerce? Så klarer du det med et SMTP-plugin, se Send mail fra WordPress og WooCommerce pålideligt via SMTP. Hvordan du beskytter en formular mod spam, kan du læse i En kontaktformular på din hjemmeside: få felterne sendt på mail og undgå spam.
Vil du lære mere? Tag det gratis kursus E-mail i orden, lektion 7.3 Mail fra din hjemmeside og formularer.
Vil du lære mere? Tag det gratis WordPress-kursus, lektion 9.1 E-mail fra WordPress.
