Как да получа правилния подател с mail() в PHP? SMTP
Ако използвате функцията mail() на PHP, като подател се показва accountnaam@imenadomein.xx. Това не може да се промени и ще доведе до грешки или до това имейлът да се приема за спам.
Най-добре е да използвате SMTP. В интернет има много безплатни PHP класове за това. Тогава имейлът се изпраща през SMTP и подателят се задава лесно.
Често използван вариант е PHPMailer
Освен това можете да изпращате имейли директно през SMTP и с PEAR Mail. Това е особено удобно при формуляри или скриптове по поръчка.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Пример: изпращане на имейл през SMTP с PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Зареждане на PEAR Mail
require_once 'Mail.php';
// SMTP настройки
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'wachtwoord';
// Данни за имейла
$to = 'ontvanger@domein.nl';
$from = 'user@domein.nl';
$subject = 'Тестово съобщение';
$body = 'Това е тестов имейл, изпратен през SMTP.';
$reply = 'user@domein.nl';
// Заглавки
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// SMTP обект
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Изпращане на имейла
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'Имейлът е изпратен успешно';
endif;
