Jak w PHP za pomocą funkcji mail() ustawić prawidłowego nadawcę? SMTP
Jeśli Państwa strona internetowa wysyła wiadomości za pomocą funkcji PHP mail(), poczta wychodzi bez logowania. Technicznym nadawcą (Return-Path) jest wtedy często konto systemowe Państwa pakietu, a nie Państwa własny adres. W rezultacie SPF i DMARC nie działają prawidłowo, wiadomości częściej trafiają do spamu, a komunikaty o błędach trafiają do skrzynki, do której nikt nie zagląda.
Dlatego zalecamy, aby strona wysyłała pocztę przez SMTP z logowaniem, tak jak Państwa program pocztowy. Wtedy nadawcą jest Państwa własny adres, a wiadomość jest traktowana jak zwykła poczta z Państwa domeny.
Dane do SMTP
- Serwer: Państwa nazwa domeny (jouwdomein.nl), jeśli strona jest hostowana w WebOké, lub nazwa serwera Państwa pakietu, np. linux2023.webawere.nl. Znajdą ją Państwo w Moje WebOké w sekcji Moje produkty, w kolumnie Serwer.
- Port: 465 z SSL/TLS lub 587 ze STARTTLS.
- Nazwa użytkownika: pełny adres e-mail skrzynki pocztowej, najlepiej osobnej skrzynki przeznaczonej dla strony, np. website@jouwdomein.nl.
- Hasło: hasło do tej skrzynki pocztowej.
Jako nadawcę (From) prosimy użyć adresu tej skrzynki lub przekierowania (forwarder), które do niej prowadzi. Adresu odwiedzającego nigdy nie należy wpisywać w polu From, lecz w Reply-To. W przeciwnym razie serwer odrzuci wiadomość lub trafi ona do spamu.
Przykład z PHPMailer
Często używaną biblioteką jest PHPMailer. Instaluje się ją za pomocą Composera (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;
}
Korzystają Państwo z WordPressa lub WooCommerce? W takim przypadku wystarczy wtyczka SMTP, zob. Niezawodna wysyłka poczty z WordPressa i WooCommerce przez SMTP. Jak chronić formularz przed spamem, opisujemy w artykule Formularz kontaktowy na stronie: wysyłanie pól e-mailem i ochrona przed spamem.
Chcą Państwo dowiedzieć się więcej? Zapraszamy na bezpłatny kurs Porządek w poczcie e-mail, lekcja 7.3 Poczta ze strony internetowej i formularze.
Chcą Państwo dowiedzieć się więcej? Zapraszamy na bezpłatny kurs WordPressa, lekcja 9.1 Poczta e-mail z WordPressa.
