2009-12-01 2 views
3

Кто-нибудь знает, можете ли вы настроить команду mail() php, чтобы она использовала только SMTP-сервер, а не локальный sendmail? У нас возникают проблемы с тем, что электронные письма помечены как спам.Использовать почту PHP для отправки через smtp

На нашем сервере работает RedHat 5 Enterprise.

Я знаю различные библиотеки PHP, которые действуют как SMTP-клиент, но я бы предпочел настроить PHP, чтобы mail() напрямую использовал SMTP-сервер.

ответ

0

Проверить эти ссылки:

Пример:

Обновление: вы можете использовать это, но он открывает и закрывает SMTP-сокет для каждой вызываемой функции mail().

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 
+0

Он спрашивает о том, как это сделать. –

+0

Установите пакет PEAR Mail. – Tebo

+0

Да, чтобы подтвердить, мне нужно получить почту(), чтобы сделать это, иначе у нас есть полная загрузка файлов PHP для перезаписи! –

0

Нет, причина в том, что все системы Linux/Unix должны иметь средство «sendmail». Преимущество заключается в том, что этот внешний инструмент может обрабатывать тайм-ауты или невосприимчивые SMTP-серверы, поэтому становится более вероятным, что почта действительно отправляется. Реализация клиента SMTP для Windows - это обход для того, что «sendmail» там не существует.

Моим подходом было бы использовать совместимый с sendmail инструмент, который просто разговаривает с другим сервером с помощью SMTP. Простым инструментом для этого является ssmtp (источники avialable here)

0

Просто сконфигурируйте локальный sendmail, чтобы использовать ваш восходящий почтовый сервер в качестве реле! Таким образом, вам не нужно менять что-нибудь со стороны PHP.

Неправильно отправлять почту непосредственно с PHP с помощью SMTP, потому что вы потеряете все от обработки ошибок до очередей в этом порядке!

0

Вы можете отправить через SMTP напрямую с помощью пакета PEAR Mail. Вам также понадобится Net_SMTP для работы почты SMTP. На многих серверах они установлены по умолчанию. Вы также можете загрузить копию этих библиотек локально и загрузить их в каталог своего сайта или включить путь. Это не идеальное решение, но оно функционально.

Если вы ищете замену для старой функции mail(), но которая отправляется через SMTP вместо стандартного PHP, вам необходимо написать функцию транслятора, которая задает все параметры в правильном порядке и например. Здесь есть пример такого сценария - очевидно, вам придется изменить его в соответствии с настройками, которые вы хотите: http://tltech.com/info/php-mail-via-smtp/

Смежные вопросы