Кто-нибудь знает, можете ли вы настроить команду mail () php, чтобы она использовала только SMTP-сервер, а не локальный sendmail? У нас возникают проблемы с тем, что электронные письма помечены как спам.
На нашем сервере работает RedHat 5 Enterprise.
Я знаю различные библиотеки PHP, которые действуют как SMTP-клиент, но я бы предпочел настроить PHP, чтобы mail () напрямую использовал SMTP-сервер.
Согласно этой странице руководства , это возможно только для Windows.
Проверьте эти ссылки:
Ссылка 1
Ссылка 2
Ссылка Три
Пример:
Обновление: вы можете использовать это, но он открывает и закрывает SMTP-сокет для каждой вызываемой функции mail ().
<?php $to = 'nobody@example.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?>
Нет, причина в том, что все системы Linux / Unix должны иметь инструмент «sendmail». Преимущество заключается в том, что этот внешний инструмент может обрабатывать тайм-ауты или невосприимчивые SMTP-серверы, поэтому становится более вероятным, что почта действительно отправляется. Реализация клиента SMTP для Windows – это обход для того, что «sendmail» там не существует.
Моим подходом было бы использовать совместимый с sendmail инструмент, который просто разговаривает с другим сервером с помощью SMTP. Простым инструментом для этого является ssmtp ( здесь источники доступны)
Просто настройте локальный sendmail для использования своего сервера upstream в качестве реле! Таким образом, вам не нужно ничего менять на стороне PHP.
Было бы неплохо отправить почту напрямую с PHP с помощью SMTP, потому что вы потеряете все, от обработки ошибок до очередей!
Вы можете отправить через SMTP напрямую, используя пакет PEAR Mail . Для работы вам также понадобится Net_SMTP, установленный для почты SMTP. На многих серверах они установлены по умолчанию. Вы также можете загрузить копию этих библиотек локально и загрузить их в каталог своего сайта или включить путь. Это не идеальное решение, но оно функционально.
Если вы ищете замену для старой функции mail()
но которая отправляется через SMTP вместо стандартного PHP, вам нужно написать функцию транслятора, которая задает все параметры в правильном порядке и т. Д. Здесь есть пример такого сценария – очевидно, вам придется изменить его, чтобы он соответствовал вашим настройкам: http://tltech.com/info/php-mail-via-smtp/