Замена /usr/bin/sendmail для PHP с функцией отправки через другой smtp-сервер с авторизацией

Коллеги, не могу что-то грамотно загуглить решение для своей задачи.

В конфиге php.ini есть такой параметр для отправки писем:

sendmail_path = /usr/sbin/sendmail -t

Нужна программка на место этого sendmail, которая бы отправляла письма не через локальный smtp, а через удаленный (в идеале, с авторизацией по логину-паролю).

Есть ли подобное в природе?

Или может подскажете как можно написать такой скрипт (желательно на perl или php-cli)? Куда копать? Не представляю как письмо со стандартного ввода в «чистом» формате сформировать в нормальное письмо и отправить на другой smtp. Вернее, представляю, но то, как я это представляю, мне не нравится. ))

Заранее, спасибо!

upd. Решение нашлось:
new.xpro.su/server-admin/php-msmtp

Спасибо mitry
  • Вопрос задан
  • 13139 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 4
Я могу подсказать как настраивал связку Centos, postfix, joomla, php-mailer на smtp.yandex.ru (с гуглем тоже должно работать, по идеи).

Правда сам до сих пор не разобрался есть ли в этой схеме лишние телодвижения или нет, т.к. изначально допустил ошибку, которую заметил намного позже.
Ответ написан
@WEBIVAN
Инсталим PEAR Mail, Pear mime и Pear Net_SMTP
pear install mail
pear install net_smtp 
pear install mail_mime

И отправляем из php без всяких sendmail
require_once ('Mail.php'); // PEAR Mail package
require_once ('mime.php'); // PEAR Mail_Mime packge
$from = "sender@example.com";
$to = "recipient@example.com";
$subject = 'SUBJECT';
$headers = array ('From' => $from,'To' => $to, 'Subject' => $subject);
$text = 'TEXT'; // text and html versions of email.
$crlf = "\n";
$mime = new Mail_mime($crlf);
$host = "smtp.example.com";
$username = "user@example.com";
$password = "pass";
$smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true,
'username' => $username,'password' => $password));
$mime->setTXTBody($text);	
$body = $mime->get();
$headers = $mime->headers($headers);
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
	echo("<p>" . $mail->getMessage() . "</p>");
}
else {
	echo("<p>Message successfully sent!</p>");
}
Ответ написан
AgentSIB
@AgentSIB
code.google.com/a/apache-extras.org/p/phpmailer/

И не надо ничего устанавливать дополнительно.

Либо читайте, например, это cri.ch/linux/docs/sk0009.html
Ответ написан
AxisPod
@AxisPod
Использовать сторонние библиотеки, которые по TCP сразу отправляют, выше указаны.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы