Альтернатива сокетам при отправке почты на SMTP

HefneR

Новичок
Альтернатива сокетам при отправке почты на SMTP

Вообщем такая проблема. Заказчик выбрал в качестве хостинга АГАВА. В процессе оказалось, что у них открыты порты начиная с 50 000. А нужно отправлять почту. Всегда делал это через сокеты, вот скрипт:

PHP:
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 = "[email protected]";
$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);
Как видно, соеденение происходит по 25 порту, те по закрытому. В саппорте сказали, что альтернативных портов нет.

Кто поопытней, подскажите, есть ли выход из данной ситуации? Возможна альтернатива сокетам?
 

HefneR

Новичок
ты про mail()? не прокатит... у них почтовик с SMTP-авторизацией
 

HefneR

Новичок
Автор оригинала: Фанат
это твои проблемы?

похоже, кое-кто не понимает, что такое сокет. и думает, что это специальный механизм для отправки спама.
ошибаешься, понимает ... и не думай что ты очень умный. не знаешь что написать - не пиши и невыёживайся
 
Сверху