Ako v PHP s funkciou mail() dosiahnuť správneho odosielateľa? SMTP
Ak používate funkciu mail() v PHP, odosielateľom bude nazovuctu@vasadomena.xx. To sa nedá zmeniť a spôsobí to chyby alebo to, že e-mail bude vyhodnotený ako spam.
Najlepšie je použiť SMTP. Na internete nájdete veľa bezplatných PHP tried, ktoré to riešia. E-mail sa potom odošle cez SMTP a odosielateľa môžete jednoducho určiť.
Často používanou možnosťou je PHPMailer
Okrem toho môžete s PEAR Mail posielať e-maily priamo cez SMTP. To je užitočné najmä pri formulároch alebo skriptoch na mieru.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Príklad: odoslanie e-mailu cez SMTP pomocou PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Načítanie PEAR Mail
require_once 'Mail.php';
// Nastavenia SMTP
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domena.sk';
$smtp_pass = 'heslo';
// Údaje e-mailu
$to = 'prijemca@domena.sk';
$from = 'user@domena.sk';
$subject = 'Testovacia správa';
$body = 'Toto je testovací e-mail odoslaný cez SMTP.';
$reply = 'user@domena.sk';
// Hlavičky
$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
));
// Odoslanie e-mailu
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-mail bol úspešne odoslaný';
endif;
