Nikkorfed
@Nikkorfed
Full-Stack JavaScript Developer

Каким способом отправлять почту из PHP?

Доброго времени суток! Реализую сейчас на сайте простейшую 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()?
  • Вопрос задан
  • 634 просмотра
Решения вопроса 1
@ynblpb_spb
дятел php
Долго воевал с mail() и в итоге перешел на PHPMailer+SMTP. Работает стабильнее.. можно пользоваться SMTP яндекса, если для домена, с которого идёт отправка использован яндексовский сервис почта для домена.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы