Miten saan PHP:n mail()-funktiolla oikean lähettäjän? SMTP
Kun käytät PHP:n mail()-funktiota, lähettäjäksi tulee tilinnimi@verkkotunnuksesi.xx. Sitä ei voi muuttaa, ja se aiheuttaa virheitä tai sen, että viesti tulkitaan roskapostiksi.
Parasta on käyttää SMTP:tä. Verkosta löytyy paljon ilmaisia PHP-luokkia tähän. Silloin viesti lähetetään SMTP:llä, ja lähettäjän voi määrittää helposti.
Yksi paljon käytetty vaihtoehto on PHPMailer
Lisäksi PEAR Mail -kirjastolla voi lähettää postia suoraan SMTP:n kautta. Tämä on kätevää erityisesti lomakkeissa ja räätälöidyissä skripteissä.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Esimerkki: SMTP-viestin lähettäminen PEARilla
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Ladataan PEAR Mail
require_once 'Mail.php';
// SMTP-asetukset
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@verkkotunnus.nl';
$smtp_pass = 'salasana';
// Viestin tiedot
$to = 'vastaanottaja@verkkotunnus.nl';
$from = 'user@verkkotunnus.nl';
$subject = 'Testiviesti';
$body = 'Tämä on SMTP:n kautta lähetetty testiviesti.';
$reply = 'user@verkkotunnus.nl';
// Otsakkeet
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// SMTP-olio
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Lähetetään viesti
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'Sähköposti lähetetty';
endif;
