Kako v PHP z mail() dosežem pravega pošiljatelja? SMTP
Če uporabljate funkcijo mail() v PHP, je pošiljatelj accountnaam@uwdomein.xx. Tega ni mogoče spremeniti, kar povzroča napake ali pa se pošta obravnava kot neželena.
Najbolje je uporabiti SMTP. Na spletu najdete veliko brezplačnih razredov PHP za to. Pošta se tedaj pošlje prek SMTP, pošiljatelja pa lahko preprosto določite.
Pogosto uporabljena možnost je PHPMailer
Poleg tega lahko s knjižnico PEAR Mail pošto pošiljate neposredno prek SMTP. To je še posebej priročno pri obrazcih ali skriptah po meri.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Primer: pošiljanje pošte prek SMTP s PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Naloži PEAR Mail
require_once 'Mail.php';
// Nastavitve SMTP
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'geslo';
// Podatki e-poštnega sporočila
$to = 'ontvanger@domein.nl';
$from = 'user@domein.nl';
$subject = 'Testno sporočilo';
$body = 'To je testno sporočilo, poslano prek SMTP.';
$reply = 'user@domein.nl';
// Glave
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// Objekt SMTP
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Pošlji sporočilo
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-poštno sporočilo je bilo uspešno poslano';
endif;
