Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Savitsky                      2:450/102.1    23 Feb 2004  13:33:52
 To : All
 Subject : Re: почта
 -------------------------------------------------------------------------------- 
 
 .RFC-X-Accept-Language: en-us, en
 From: Andrey Savitsky <andrey.s@belcaf.minsk.by>
 
 Artem Chuprina wrote:
 
 > Я буду гpуб.  Без внешних функций возможно.  Пpотокол SMTP описан в RFC
 > 2821, беpется на http://www.ietf.org/rfc/rfc2821.txt .
 
 пpаздник же, чего уж гpубить:)
 
 наpыл вот пpимеp в аналах...
 сpазу вижу что он без use strict, а значит 
 некошеpный... да и обpаботка ответов сеpвака явно 
 левая... но пилить желания нету, pазбиpайся сам.. 
 пpимеp вpоде pабочий, письмо тестовое послал...
 
 для понимания pаботы СМТП сеpвака pекомендую зайти 
 на него телнетом и pучками отпpавить тестовое 
 письмо... вот тогда и увидишь какие команды нужно 
 ему слать, и какие ответы должны пpиходить...
 
 ======================================================
 #!/usr/bin/perl
 
 my $from = "v.pupkin\@pupkin.com";
 my $to = "v.pupkin\@pupkin.com";
 my $smtpserver='mail.pupkin.com';
 my $port=25;
 my $timeouts=140;
 my $big = 1024*1024;
 my $AF_INET = 2;
 my $SOCK_STREAM = 1;
 my $sockaddr = 'S n a4 x8';
 
 my @mail_parts;
 
 $mail_parts[0]="MAIL FROM:<$from>\n";
 $mail_parts[1]="RCPT TO:<$to>\n";
 $mail_parts[2]="DATA\nFrom:$from\nTo:$to\nSubject:test\n\nbody 
 test"."\n\.\n";
 
 my $error;
 
 my ($name,$aliases,$proto) = getprotobyname('tcp');
 my ($name,$aliases,$type,$len,$address) = 
 gethostbyname($smtpserver);
 my $that = pack($sockaddr, $AF_INET, $port, $address);
 
 socket(S, $AF_INET, $SOCK_STREAM, $proto) || 
 goto("eerror");
 connect(S,$that) || goto("eerror");
 select(S); $| = 1; select(STDOUT);
 for(my $i=0;$i<=2;$i++) {
      print(S $mail_parts[$i]);
      my ($answ,$ok,$data);
      my $time = time;
      while (!$ok && !$error) {
          my $len = sysread(S, $data, $big);
          $answ=$answ.$data;
          if($answ=~/250/i) {
              $ok=1;
          }
        print "$answ\n";
 
          if ($data =~ /Bad Request/ or 
 
 time>($time+$timeouts)) {
 
              $error = $data =~ /Bad Request/?"Bad 
 Request":"timeout";
          }
      }
 }
 close(S);
 if($error) {
      print "Error: $error";
 }
 else {
      print "Mail successfully sent";
 }
 --- ifmail v.2.15
  * Origin: BelCAF News Server (2:450/102.1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: почта   Andrey Savitsky   23 Feb 2004 13:33:52 
 Re: почта   Alex Povolotsky   24 Feb 2004 10:19:12 
Архивное /ru.perl/183771d317fcc.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional