Hur får jag rätt avsändare med mail() i php? smtp
Skickar din webbplats e-post med PHP-funktionen mail(), går mejlet iväg utan inloggning. Den tekniska avsändaren (Return-Path) är då ofta systemkontot för ditt paket och inte din egen adress. Därför stämmer inte SPF och DMARC, mejlet hamnar oftare i skräpposten och felmeddelanden hamnar i en brevlåda som ingen läser.
Låt därför din webbplats skicka e-post via SMTP med inloggning, precis som ditt e-postprogram. Då är din egen adress avsändaren och mejlet behandlas som vanlig e-post från din domän.
Uppgifterna för SMTP
- Server: ditt domännamn (dindoman.se) om din webbplats ligger hos WebOké, eller servernamnet för ditt paket, till exempel linux2023.webawere.nl. Det hittar du i Mitt WebOké under Mina produkter, i kolumnen Server.
- Port: 465 med SSL/TLS, eller 587 med STARTTLS.
- Användarnamn: den fullständiga e-postadressen till en brevlåda, helst en separat brevlåda för webbplatsen, till exempel website@dindoman.se.
- Lösenord: lösenordet till den brevlådan.
Använd adressen till den brevlådan som avsändare (From), eller en vidarebefordran som skickar vidare till den. En besökares adress lägger du aldrig i From, utan i Reply-To. Annars avvisar servern mejlet eller så hamnar det i skräpposten.
Exempel med PHPMailer
Ett vanligt bibliotek är PHPMailer. Du installerar 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 = 'dindoman.se';
$mail->Port = 465;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->SMTPAuth = true;
$mail->Username = 'website@dindoman.se';
$mail->Password = 'wachtwoord';
$mail->CharSet = 'UTF-8';
// Afzender, antwoordadres en ontvanger
$mail->setFrom('website@dindoman.se', 'Website dindoman.se');
$mail->addReplyTo('bezoeker@example.net');
$mail->addAddress('info@dindoman.se');
// 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;
}
Använder du WordPress eller WooCommerce? Då ordnar du detta med ett SMTP-tillägg, se Skicka e-post från WordPress och WooCommerce på ett pålitligt sätt via SMTP. Hur du skyddar ett formulär mot spam läser du i Ett kontaktformulär på din webbplats: skicka fälten via e-post och förhindra spam.
Vill du lära dig mer? Gå den kostnadsfria kursen Ordning på e-posten, lektion 7.3 E-post från din webbplats och formulär.
Vill du lära dig mer? Gå den kostnadsfria WordPress-kursen, lektion 9.1 E-post från WordPress.
