Что лучше mail() OR sendmail (смотрел исходники)?

maxim

Новичок
Что лучше mail() OR sendmail (смотрел исходники)?

Меня мучает вопрос почему на форуме советуют при
отправке новостей подписчикам
вместо прямого вызова mail() использовать нечто похожее на

$fd = popen("/usr/sbin/sendmail -t", 'w');
fputs($fd, "To: $to\n");
fputs($fd, "Subject: $subject\n");
fputs($fd, "$headers\n");
fputs($fd, "\n");
fputs($fd, $message);
fputs($fd, "\n");
fputs($fd, '.');
pclose($fd);

Я посмотрел исходники (mail.c)
...
sendmail = popen(sendmail_cmd, "w");
...
fprintf(sendmail, "To: %s\n", to);
fprintf(sendmail, "Subject: %s\n", subject);
if (headers != NULL) {
fprintf(sendmail, "%s\n", headers);
}
fprintf(sendmail, "\n%s\n", message);
ret = pclose(sendmail);
...

1) Не есть ли это одно и тоже?
Кстати в исходниках нет пустой строки с одной точкой хотя в sendmail man сказано
-----
With no flags, sendmail reads its standard input up to an end-of-file or
a line consisting only of a single dot and sends a copy of the message
found there to all of the addresses listed.
-----
2) значит ли это, что pclose() генерирует конец_файла?

3) Правильно ли я думаю, что при вызове скрипта через крон
не важно как отсылается почта в программе через mail() OR sendmail или есть какие то подводные камни?

Я не спец по *никсам и у меня сплошные сомнения.
 

Orlis

Guest
mail() лучше, потому, что это документированная функция

PHP прекрасно работает и без юниксов и сендмейлов...

А скрипт в стиле:
PHP:
$fd = popen("/usr/sbin/sendmail -t", 'w');
Жуть!!!

Чтобы придти к такому выводу необязательно смотреть исходники и читать маны по sendmail. :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
даже слезы наворачиваются на глаза когда это слышу
http://mirrors.usaaa.ru:8001/books/tcpip/sendmail/index.htm

кто тогда почту в никсах отсылает - вопрос...
 

Cid

...двинутый новичок
Вот если у тебя 100 тыс. подписчиков (а на subscribe.ru, например, это обычное дело), сколько у тебя будет скрипт работать?

А так ты фактически пишешь, ну, считай, в файл (пайп, сокет, что угодно).

Такой подход имеет смысл при большом объеме отправляемых сообщений (спам, к примеру :) ). А в остальном - используй mail и не парься.

P.S. Sendmail отстой, Postfix форева :) (IMHO)

P.P.S. Сам все время отправляю через сокет, т.к. необходимо использовать авторизацию на отправку, чего mail не предусматривает. Вот тебе еще одна причина.
 

Fire

Guest
СЫpok,
Да mail(); это просто -
mail("мэйл","тема","сообщение");
Не. Лучше вот так делать:
PHP:
$message = 
 "From: Лист рассылки
 To: Ивану Ивановичу
 Subject: Тема
 Content-type: text/plain; charset=windows-1825

 Уважаемый товарищ! Это письмо было отослано роботом.";
Mail("[email protected]","",$message);
Текст письма отделяется от заголовков пустой строкой!!!
P.S. Чтоб не было проблем с subject на русском - заголовок 'Content-type: test/plain; charset=windows-1825' напиши два раза - перед всеми заголовками и после.
Пример:
Content-type: test/plain; charset=windows-1825
....//остальные заголовки
Content-type: test/plain; charset=windows-1825
//обязательно пустая строка между заголовками и текстом!
Текст сообщения
 

Demiurg

Guest
Fire
это не лучше. и что за кодировка 1825 ?
 

Fire

Guest
Demiurg, да лучше использовать koi8-r
но, тогда надо будет добавитть
PHP:
$message = convenrt_cyr_string($message,"w","k");
 

crocodile2u

http://vbolshov.org.ru
1825 - судя по всему, восстание декабристов. чел просто готовится к экзамену по истории отечества :)
 

TuBu

Guest
$message =
"From: Лист рассылки
To: Ивану Ивановичу
Subject: Тема
Content-type: text/plain; charset=windows-1825

Уважаемый товарищ! Это письмо было отослано роботом.";
Mail("[email protected]","",$message);
Интересно ... зачем эти мерзкие разработчики PHP придумали четвертый параметр в mail()
 

Cblpok

Новичок
$message =
"From: Лист рассылки
To: Ивану Ивановичу
Subject: Тема
Content-type: text/plain; charset=windows-1825

Уважаемый товарищ! Это письмо было отослано роботом.";
Mail("[email protected]","",$message);
Ну можно и так, у меня так в форме рассылки, я просто описал, как работает mail();
Спасибо за поддержку.
Теперь нас двое
 

Fire

Guest
По поводу win-1825, сам не знаю, листинг отправки мыла взая из мануала Д. Котерова. Я сам чё-то засомневался но подумал что может что-то новое? Все вопросы этому Котерову сможете задать на www.dklab.ru
Кстати, у него в мане многие листинги не действует.
 

tony2001

TeaM PHPClub
Fire
мануал - это то, что на php.net.
все остальное мануалом по определению называться не может.
если уж ты делаешь copy/paste - разберись сначала сам перед тем, как советовать другим.
 

Fire

Guest
вобще - то мануал (manual) это учебник по английски и все учебники можно назвать мануалами
 

Demiurg

Guest
так и надо было сказать учебник Д. Котерова, что бы разногласий не было. Мануалом в php называют вполне конкретную вещь.
 
Сверху