Доброго времени суток! Реализую сейчас на сайте простейшую HTML форму, которая собирает данные и отправляет их письмом на определенный адрес. Написал код следующего вида:
$to = 'ivan.ivanovich@example.ru';
$subject = 'Тема письма';
$from = ' info@example.ru>';
$headers = "From: $from\r\n";
$headers .= "Reply-To: $from\r\n";
$headers .= "Return-Path: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "X-Mailer: PHP" . phpversion() . "\r\n";
$message =
"<html>
<body>Текст письма</body>
</html>";
mail($to, $subject, $message, $headers);
Письмо отправлялось и доходило. Все было нормально кроме того, что оно постоянно попадало в папку "спам". Чтобы исправить это, создал почтовый домен у хостера, ящик вида info@example.ru и активировал все функции, которые уменьшали вероятность попадания в спам (SpamAssassin, DKIM, DMARC и SSL). После этого проверил письмо в
mail-tester, который выдал 1.6 балла и показал, что заголовок Return-Path содержит адрес, который вообще никак не относится к этой форме. Как выяснилось позже, он брался из файла
php.ini. Поменял в нём параметр
sendmail_path на
/usr/sbin/sendmail -t -i -f info@example.ru и всё заработало как надо. Письма теперь не летят в спам, отлично.
Но отсюда сразу же возникло пару вопросов:
1. Как быть, если на этом же сервере расположен другой сайт с другим доменом и с него нужно тоже отправить письмо?
2. Прочитал, что есть специальная библиотека
PHPMailer, которая может отправлять письма через сторонние SMTP серверы. Что это вообще такое и стоит ли её использовать для этого?
3. И какой вообще способ из этих двух лучше использовать для простой отправки писем с сайта? Внешние SMTP серверы чем-то принципиально лучше или хуже, чем стандартная функция
mail()?