Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Некорректно работает fsockopen()

Сообщения:  [1-7] 

 
 автор: NIK   (13.10.2006 в 07:40)   письмо автору
 
   для: pini-pini   (12.10.2006 в 17:44)
 

Trianon оказался прав, работает и через mail().

   
 
 автор: pini-pini   (12.10.2006 в 17:44)   письмо автору
 
   для: NIK   (12.10.2006 в 17:11)
 

Можно поставить ретлянслятор на сервер, на котором разрешён fsockopen
А из этого скрипта вызывать ретлянслятор на другом сервере, и передавать туда ему данные

   
 
 автор: Trianon   (12.10.2006 в 17:16)   письмо автору
 
   для: NIK   (12.10.2006 в 17:11)
 

по идее, в этом случае хостер должен обеспечить работу функции mail

   
 
 автор: NIK   (12.10.2006 в 17:11)   письмо автору
 
   для: Trianon   (12.10.2006 в 09:19)
 

ясно, так оно и есть. Но это ещё хуже :(

вот приведу цитату из ответа саппорта хостинга:

У нас открыты только порты выше 50000, Ваш скрипт врядли удасться
заставить работать


Есть альтернативные варианты? Может кто предоставляет такого рода услуги на таких портах? И вообще как быть когда хостер закрыл порт, как отправить почту с сайта? Кто поопытнее подскажите, есть ли выход :(

Вывод: агава - хостинг хуже некуда!

   
 
 автор: Trianon   (12.10.2006 в 09:19)   письмо автору
 
   для: NIK   (11.10.2006 в 20:54)
 

вероятно, на стороннем хосте запрещено подключаться с помощью fsockopen к 25 порту.

   
 
 автор: NIK   (11.10.2006 в 20:54)   письмо автору
 
   для: NIK   (11.10.2006 в 18:49)
 

ну да, так оно и есть. на локалхосте всё отправляется на ура. Как заливаешь на сторонний хост - не т и всё тут :(

   
 
 автор: NIK   (11.10.2006 в 18:49)   письмо автору
 
 

Использую такой скрипт для отправки e-mail через почтовый сервер с SMTP-авторизацией:


function smtp_send_cmd($smtp_s, $cmd){
    echo "<b>$cmd</b><br>";
    $smtp_msg  = "";
    $smtp_code = "";
    fputs($smtp_s, $cmd."\r\n"); // отправляем команду
    while ($line = fgets($smtp_s, 515)){
      $smtp_msg .= $line;
      if (substr($line, 3, 1) == " "){
        break;
      }
    }
    echo "$smtp_msg <br>";
    $smtp_code = substr( $smtp_msg, 0, 3 ); // вырезаем из строки код ответа
    return $smtp_code==""?FALSE:$smtp_code;
}

# Данные для отправки пиьма
$server = "cp43.agava.net"; // ретранслятор почтовика агавы
$user = "a@b.c";
$pass = "abc";
$smtp_port = 25;

$msg = "СПАСИБО КОМАНДЕ САЙТА";

  $headers = "Subject: ТЕМА\r\nFrom: $email\r\nTo: $order_email\r\nContent-Type: text/plain; charset=windows-1251\r\nContent-Transfer-Encoding: 8bit";
  $data = $headers."\r\n\r\n".$msg;
  set_time_limit(30);
  $smtp_socket = fsockopen($server, $smtp_port, $errno, $errstr, 30);
  while ($line = @fgets($smtp_socket, 515)){
    $smtp_msg .= $line;
    if (substr($line, 3, 1) == " "){
      break;
    }
  }
  $answer = substr( $smtp_msg, 0, 3 );
  if($answer != '220') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, 'HELO '.$localhost);
  if($answer != '250') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, 'AUTH LOGIN');
  if($answer != '334') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, base64_encode($user));
  if($answer != '334') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, base64_encode($pass));
  if($answer != '235') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, 'MAIL FROM:'."$email");
  if($answer != '250') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, 'RCPT TO:'.$order_email);
  if($answer != '250') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, "DATA");
  if($answer != '354') die ($answer);
  fputs($smtp_socket, $data."\r\n");
  $answer = smtp_send_cmd($smtp_socket, ".");
  if($answer != '250') die ($answer);
  $answer = smtp_send_cmd($smtp_socket, "QUIT");
  if($answer != '221') {
    echo "Попробуйте позже";
  } else {
    echo "Спасибо";
  }
  fclose($smtp_socket);


Собственно ответ таков:

Warning: fsockopen() [function.fsockopen]: unable to connect to cp43.agava.net:25 in index.php on line 112


Не может приконектиться не только к этому серверу, но и к любому другому. Пробовал на хостинге AGAVA.RU и на EOMY.NET. Какие версии PHP и сервера я не знаю, могу узнать если важно. В чём может быть проблема?

PS: кстати на локалхосте такого вроде не было, сейчас поставлю - проверю

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования