Mail(). php выдает Warning: Server Error

Теркин

Новичок
Mail(). php выдает Warning: Server Error

Php.ini

SMTP = mail.valuehost.ru
sendmail_from = NULL ;for win32 only
smtp_port = 25
sendmail_path = DEFAULT_SENDMAIL_PATH

функция
mail("[email protected]", "My Subject", "Line 1\nLine 2\nLine 3");

выдает предупреждение
Warning: Server Error

Пробовал telnet mail.valuehost.ru 25

Выдает
220 mx4.valuehost.ru ESMTP

На сервере (mail.valuehost.ru) есть авторизация

Логин и пароль я ни где не указывал
Думаю проблема в этом

Скажите где их указывать?

И что должно быть в disable_functions. Она нужна вообще?
 

Макс

Старожил PHPClub
mail() не работает с SMTP-серверами, требующими авторизацию.

Если через такой сервер надо слать письмо то либо ручками через [m]fsockopen[/m] или готовые классы используй - pear::mail + pear::net::smtp например
 

Теркин

Новичок
Пробовал так

$connect = fsockopen ('mail.valuehost.ru', 25, $errno, $errstr, 30);
fwrite($connect, "Login\n");
fwrite($connect, "Password\n");
fwrite($connect, "HELO localhost\r\n");
fwrite($connect, "MAIL FROM: [email protected]\n");
fwrite($connect, "RCPT TO: [email protected]\n");
fwrite($connect, "DATA\r\n");
fwrite($connect, "Content-Type: text/plain; charset=iso-8859-1\n");
fwrite($connect, "To: [email protected]\n");
fwrite($connect, "Subject: 123\n");
fwrite($connect, "\n\n");
fwrite($connect, stripslashes('456')." \r\n");
fwrite($connect, ".\r\n");
fwrite($connect, "RSET\r\n");
fclose($connect);

и так

include('Mail.php');

$mail =& Mail::factory('smtp', array('host' => 'mail.valuehost.ru', 'username' => 'Login', 'password' => 'password', 'port' => 25));
$mail->send('[email protected]', '123', '456');

Ни ошибок, ни предупреждений, ни письма
 

Макс

Старожил PHPClub
ну первый код полюбому работать не будет - ты же авторизацию не проходишь.

Насчет второго - возможные ошибки :
1. неправильные данные
2. не все пакеты установил (Насколько я помню, там как минимум нужны классы : Net_Socket, Net_SMTP, AUTH_SASL)
3. Посмотри какие параметры метод send() принимает
http://pear.php.net/manual/en/package.mail.mail.send.php
и пример
http://pear.php.net/manual/en/package.mail.mail-mime.example.php
 

Теркин

Новичок
на другом серваке работает
почему на этом не хочет, не знаю
и еще как через сокет авторизацию пройти?
 

Линк

Guest
наверное ты в спам-листее
откуда я знаю, почему твой mail.ngs.ru не шлет письма?
спроси у его админа
 

Теркин

Новичок
Все разобрался
Класс “Mail” не работал из-за того, что не было класс “PEAR”.
А на другие адреса не слал письма потому, что я авторизацию не прошел.
Если кому интересно, то через сокет авторизируются так

fwrite($f, "AUTH LOGIN\r\n");
fwrite($f, base64_encode($username)."\n");
fwrite($f, base64_encode($password)."\n");

Всем спасибо!!!
 
Сверху