Проблема с отправкой письма из php скрипта через smtp сервер

mrJo

Новичок
Проблема с отправкой письма из php скрипта через smtp сервер

Здравствуйте, есть php скрипт:

<?
$message="q";
$mailer="PHP";
$connect = fsockopen (localhost, 25);
fputs($connect, "HELO localhost\r\n");
fputs($connect, "MAIL FROM: [email protected]\n");
fputs($connect, "RCPT TO: [email protected]\n");
fputs($connect, "DATA\r\n");
fputs($connect, "To: [email protected]\n");
fputs($connect, "MIME-Version: 1.0\n");
fputs($connect, "Content-Type: text/plain; charset=utf-8\n");
fputs($connect, "Content-transfer-encoding: 8bit\n");
fputs($connect, "X-Priority: 3\n");
fputs($connect, "X-MSMail-Priority: Normal\n");
fputs($connect, "From: [email protected]\n");
fputs($connect, "X-Mailer: $mailer\n");
fputs($connect, "\n\n");
fputs($connect, stripslashes($message)." \r\n");
fputs($connect, ".\r\n");
fputs($connect, "RSET\r\n");
?>

если попробовать его запустить командой
/usr/bin/php /root/mail.php

то письмо уходит нормально, но если попробовать добавить это задание (/usr/bin/php /root/mail.php) в crontab то письмо почемуто не уходит и в логах smtp сервера появляется:
unexpected disconnection while reading SMTP command from localhost [127.0.0.1]

в качестве smtp сервера выступает exim, в конфиге присутствует:
smtp_enforce_sync = false

Помогите решить проблему

Если создал тему не там прошу прощения
 

DiMA

php.spb.ru
Команда форума
выполняй обе команды из под одного юзера
погугли ошибку
 

mrJo

Новичок
DiMA
вручную выполняю команду от root'а задание в crontab добавляю от тогоже root'а на скрипт стоят права 777, кстати заметил одну интересную вещь, из 10 отправленных писем через crontab одно всё же отправляется
 

DiMA

php.spb.ru
Команда форума
я понял - ошибка в твоем говнокоде, сотри его целиком

команды нельзя исполнять мгновенно
fputs($connect, "HELO localhost\r\n");
fputs($connect, "MAIL FROM: [email protected]\n");
между ними нужно сделать паузу и считать ответ сервера

пауза не в виде дегенератского sleep(1), а while() { fread() ... } )

воспользуйся готовыми библиотеками PEAR
 

mrJo

Новичок
Автор оригинала: DiMA
между ними нужно сделать паузу и считать ответ сервера
специально для этого и отключена синхронизация (smtp_enforce_sync = false) благодаря чему smtp сервер позволяет принимаь команды без задержек. Не понятно то что при запуске скрипта руками всё проходит нормально, а через крон нет
 
Сверху