На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Дополнения к правилам (только для данного раздела)
- Используйте подсветку синтаксиса при выделении исходного кода;
- В описании темы обязательно укажите язык программирования;
- Прежде чем задать вопрос, обязательно воспользуйтесь поиском и загляните в FAQ раздела.
- Если вопрос касается серверного ПО, указывайте ОС.
- Если вопрос касается ASP.NET то лучше будет задать его в соответствующем разделе. Там вы сможете получить ответ намного быстрее.

Модераторы: Serafim, fatalist
  
> Отправка почты, Аномалия...
    Блин, мужики помогите плз.

    Воспользовавшись поиском набрел на скрипт отправки почты с помощью "сокетного" подключения к SMTP серверу.

    ExpandedWrap disabled
      <?php
       
        function send_my_mail($host, $from, $to, $subj, $message, $type)
        {
              if($type=="") $type="text/plain";
              $fp = fsockopen($host, 25);
              $log.=fgets($fp)."<br>";
              fputs($fp, "HELO $host\n");
              $log.=fgets($fp)."<br>";
              fputs($fp, "MAIL FROM:<$from>");
              $log.=fgets($fp)."<br>";
              fputs($fp, "RCPT TO:<$to>");
              $log.=fgets($fp)."<br>";
              fputs($fp,"DATA");
              $log.=fgets($fp)."<br>";
              fputs($fp, "From: G@uSS");
              fputs($fp, "Subject: $subj");
              fputs($fp, "MIME-Version: 1.0");
              fputs($fp, "Content-Type: $type");
              fputs($fp,"");
              fputs($fp,$message);
              fputs($fp,".");
              $log.=fgets($fp)."<br>";
              fputs($fp,"QUIT");
              $log.=fgets($fp)."<br>";
              fclose($fp);
              return $log;
        }
              echo "-=start=-<br>";
              $server_answers = send_my_mail("smtp.mydomain.com","gauss@mydomain.com","gauss@mydomain.com","Тема","Текст письма","");
              echo $server_answers."<br>";
              echo "-=end=-";
      ?>


    Запускаю скрипт на своем web-сервере(Apache 2.0.55/PHP 5.1.1), долго жду...
    В итоге получаю ответ в окне броузера:

    -=start=-
    220 mydomain.com Courier ESMTP server ready







    -=end=-

    Т.е. приветствие сервера, потом 7 <br>`ок и все...
    Как я понял скрипт закончил свое деяние по тайм-ауту.
    И еще такое впечатление что после того как скрипт получил приветствие, он(скрипт) серверу больше ничего не отправлял...

    Пробовал подключится к етому серверу с помощью TELNET на 25 порт.
    Проделал всю оперцию вручную - письмо отправилось, только с кодировкой проблема.

    Кто-нибудь может мне помочь разобраться в чем дело?
    Сообщение отредактировано: G@uSS -
      Добавь в конец каждой строки, отсылаемой серверу, переаод каретки, а еще лучше - пару \r\n.

      З.Ы. А какая-нибудь логика есть в том, что HELO отсылается через fwrite, а всё остальное - через fputs?
        Нет логики. Ето я сначала пробовал добиться результата изменением функции fputs на fwrite. А когда менял обратно видать не все изменил... Сейчас по-пробую то что вы мне по-советовали.
          Adil, вы были правы. Вся проблема заключалась в нехватке пары "\r\n" в каждой строке, отправляемой серверу.
          Спасибо за отзывчивость и помощь.
          +

          К модераторам форума есть предложение добавить данный нюанс в FAQ к сообщению про отправку почты.
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script Execution time: 0,0661 ]   [ 14 queries used ]   [ Generated: 25.06.19, 14:47 GMT ]