E-mail в PHP

dchumach

Кто-нить знает как сделать автоматическую отправку писем в PHP?

VitMix

Стандартная функция mail.
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])
Требует правильно настроенного sendmail и PHP

rfgbnfy

ИМХО лучше сокеты юзать...............

VitMix

Сокеты -- это если по SMTP почту отправлять. Общепринятый способ все-таки другой -- запускать sendmail и скармливать ему письмо. Так делает большинство почтовых программ.
Кроме того стандартная функция mail умеет отправлять почту по SMTP (используя сокеты). Для этого надо SMTP сервер в php.ini прописать. См. например http://www.hackers/docs/php/ref.mail.html

dchumach

А ты уже пробовал настроить mail таким образом (просто у меня видимо что-то недонастроено)?

rfgbnfy

А mail php-шный как работает? Типа SMTP тут ни при чём?
Да и sendmail туда же...........

stat2497492

2: Было бы неплохо, если бы ты уточнил, в каком окружении все это должно работать. Например если это все на сервере, который стоит на площадке у провайдера и имеет собственны глобальный IP и доменное имя, что все, что нужно -- это sendmail (qmail, postfix) с настройками, близкими к принятым по умолчанию. Если это комп, находящийся, скажем, внутри нашей локальной сети, что стоит gw.local прописать в php.ini, а если это комп с Windows, то надо разбираться отдельно. В общем случае советую проверить, умеет ли sendmail отправлять почту. Если нет, то проблемы скорее всего не в PHP.
2: Как я понял из документации, поддержка SMTP функцией mail введена в основном для использования под Windows. Для UNIX запуск sendmail предпочтительнее и именно этот способ она (функция mail) использует по умолчанию. Я в свое время использовал эту функцию без особенных проблем, но это было на сервере провайдера, где все настройки были в порядке. В принципе можно и самому запускать sendmail например так
<?php
$fd = popen("/usr/sbin/sendmail -t","w");
fputs($fd, "To: domain.tld\n");
fputs($fd, "From: Me \n");
fputs($fd, "Subject: Test message from my web site\n");
fputs($fd, "X-Mailer: PHP3\n");
fputs($fd, "Testing.\n");
pclose($fd);
?>
Но зачем делать заного то, что уже реализовано в функции mail?
{пример взят с http://www.phphelp.com}

rfgbnfy

()
Может объяснишь тупому как работает sendmail , да ещё не используя SMTP ? То есть по какому протоколу можно ещё передовать mail-ы .............

zsn66

sendmail умеет использовать те протоколы, которые в нём настроены
Но дело не в этом, а в том, что MTA умеет много чего хорошего, что не реализуешь в скрипте на php
например, очередь сообщений на отправку

rfgbnfy

"sendmail умеет использовать те протоколы, которые в нём настроены" - настраивал в ручную что либо? поделись опытом....
На счёт очереди - не надо так категорично ..........У нас например работает на 50% пропатченом и на 50% переписаном qmail-е . А кто мешает частично пропатчить , а всё остальное на пхп реализовать?

zsn66

> настраивал в ручную что либо? поделись опытом....
другие настраивали. UUCP например.
> У нас например работает на 50% пропатченом и на 50% переписаном qmail-е .
Т.е. присутствует изрядный кусок MTA, который и реализует нужную функциональность.
> А кто мешает частично пропатчить , а всё остальное на пхп реализовать?
Никто не мешает. Так и надо делать.
Дёргать /usr/sbin/sendmail из пхп и всё

dchumach

Я пробовал пользоваться функцией mail но она не работала, хотя на той же машине сендмэйл был настроен (на линухе). Твой способ обязательно опробую.

VitMix

В php.ini есть параметр sendmail_path, который помогает в том случае, если PHP не может найти sendmail.
Оставить комментарий
Имя или ник:
Комментарий: