Замена /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
  • Вопрос задан
  • 13142 просмотра
Решения вопроса 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 сразу отправляют, выше указаны.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
22 апр. 2024, в 16:15
18000 руб./за проект
23 апр. 2024, в 16:55
10000 руб./за проект