Ako môžem v PHP pomocou mail() dosiahnuť správneho odosielateľa? SMTP
Ak vaša webová stránka odosiela e-maily pomocou PHP funkcie mail(), e-mail odchádza bez prihlásenia. Technickým odosielateľom (Return-Path) je potom často systémový účet vášho balíka, a nie vaša vlastná adresa. SPF a DMARC preto nesedia správne, e-mail častejšie skončí v spame a chybové hlásenia prichádzajú do schránky, do ktorej sa nikto nepozerá.
Nechajte preto svoju webovú stránku odosielať e-maily cez SMTP s prihlásením, rovnako ako váš e-mailový program. Odosielateľom je potom vaša vlastná adresa a e-mail sa spracúva ako bežná pošta z vašej domény.
Údaje pre SMTP
- Server: názov vašej domény (jouwdomein.nl), ak je vaša webová stránka u WebOké, alebo názov servera vášho balíka, napríklad linux2023.webawere.nl. Nájdete ho v Môj WebOké v časti Moje produkty, v stĺpci Server.
- Port: 465 so SSL/TLS alebo 587 so STARTTLS.
- Používateľské meno: celá e-mailová adresa schránky, ideálne samostatnej schránky pre webovú stránku, napríklad website@jouwdomein.nl.
- Heslo: heslo k tejto schránke.
Ako odosielateľa (From) použite adresu tejto schránky alebo forwarder, ktorý na ňu presmerúva. Adresu návštevníka nikdy nezadávajte do From, ale do Reply-To. Inak server e-mail odmietne alebo e-mail skončí v spame.
Príklad s PHPMailer
Často používanou knižnicou je PHPMailer. Nainštalujete ju pomocou Composeru (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;
}
Používate WordPress alebo WooCommerce? Potom to vyriešite pomocou SMTP pluginu, pozrite si Spoľahlivé odosielanie e-mailov z WordPressu a WooCommerce cez SMTP. Ako ochrániť formulár pred spamom, sa dočítate v článku Kontaktný formulár na vašej webovej stránke: odosielanie polí e-mailom a predchádzanie spamu.
Chcete sa dozvedieť viac? Absolvujte bezplatný kurz Poriadok v e-mailoch, lekcia 7.3 E-maily z webovej stránky a formuláre.
Chcete sa dozvedieť viac? Absolvujte bezplatný kurz WordPressu, lekcia 9.1 E-maily z WordPressu.
