Miten saan php:ssä mail()-funktiolla oikean lähettäjän? smtp
Jos verkkosivustosi lähettää sähköpostia PHP-funktiolla mail(), posti lähtee matkaan ilman kirjautumista. Tekninen lähettäjä (Return-Path) on silloin usein palvelupakettisi järjestelmätili eikä oma osoitteesi. Siksi SPF ja DMARC eivät täsmää kunnolla, posti päätyy useammin roskapostiin ja virheilmoitukset menevät postilaatikkoon, jota kukaan ei lue.
Anna siksi verkkosivustosi lähettää postia SMTP:n kautta kirjautuen, aivan kuten sähköpostiohjelmasi tekee. Silloin lähettäjänä on oma osoitteesi, ja postia kohdellaan tavallisena verkkotunnuksesi postina.
SMTP-asetukset
- Palvelin: verkkotunnuksesi (jouwdomein.nl), jos verkkosivustosi on WebOkéllä, tai pakettisi palvelimen nimi, esimerkiksi linux2023.webawere.nl. Löydät sen Oma WebOkésta kohdasta Omat tuotteet, sarakkeesta Palvelin.
- Portti: 465 ja SSL/TLS tai 587 ja STARTTLS.
- Käyttäjätunnus: postilaatikon koko sähköpostiosoite, mieluiten verkkosivustoa varten erillinen postilaatikko, kuten website@jouwdomein.nl.
- Salasana: kyseisen postilaatikon salasana.
Käytä lähettäjänä (From) tämän postilaatikon osoitetta tai siihen ohjaavaa edelleenlähetysosoitetta. Kävijän osoitetta et koskaan laita From-kenttään vaan Reply-To-kenttään. Muuten palvelin hylkää viestin tai se päätyy roskapostiin.
Esimerkki PHPMailerilla
Yleisesti käytetty kirjasto on PHPMailer. Asennat sen Composerilla (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;
}
Käytätkö WordPressiä tai WooCommercea? Silloin hoidat tämän SMTP-lisäosalla, katso Sähköpostin luotettava lähettäminen WordPressistä ja WooCommercesta SMTP:n kautta. Lomakkeen suojaamisesta roskapostilta voit lukea artikkelista Yhteydenottolomake verkkosivustollesi: kenttien lähettäminen sähköpostina ja roskapostin estäminen.
Haluatko oppia lisää? Osallistu ilmaiseen Sähköposti kuntoon -kurssiin, oppitunti 7.3 Sähköposti verkkosivustolta ja lomakkeista.
Haluatko oppia lisää? Osallistu ilmaiseen WordPress-kurssiin, oppitunti 9.1 Sähköposti WordPressistä.
