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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Roman Kondrashin                     2:5020/400     09 Feb 2001  11:30:08
 To : All
 Subject : Re: Форма -> е-меил
 -------------------------------------------------------------------------------- 
 
 "Roman Reznichenko" <Roman.Reznichenko@p555.f155.n5080.z2.fidonet.org> wrote
 in message news:981637084@p555.f155.n5080.z2.ftn...
 
 > Дайте, плиз, скриптик, для посылки сабжа без использования почтовой
 
 программы
 
 > пользователя. Т.е. он заполняет форму, жмет "Отправить", они сразу
 > отправляется...
 
     Скриптик так себе... надо бы доработать, но лень... отправляет-то всё
 равно нормально
 
 use Socket;
 
 # функция проверки ответа сервера
 sub checkResponse
 {
     $code = shift;
     if (index ($s, $code) == -1)
     {
         return -1;
     }
 }
 
 sub sendMail
 {
     ($from, $to, $subject, $mail) = @_;
 # здесь указываешь SMTP host
     $host = "smtp.hostname";
     $port = 25;
     $ip = (gethostbyname ($host))[4];
     $server = pack ("S n a4 x8", AF_INET, $port, $ip);
     $proto = (getprotobyname ('tcp'))[2];
     socket (SERVER, PF_INET, SOCK_STREAM, $proto) or return -1;
     connect (SERVER, $server) or return -1;
     select (SERVER);
     $| = 1;
     select (STDOUT);
     $s = <SERVER>;
     &checkResponse ("220");
 # представляемся серверу... используешь, в принципе, любое имя
     print SERVER "helo beerdrinker\n";
     $s = <SERVER>;
     &checkResponse ("250");
     print SERVER "mail from: <$from>\n";
     $s = <SERVER>;
     &checkResponse ("250");
     print SERVER "rcpt to: $to\n";
     $s = <SERVER>;
     &checkResponse ("250");
     print SERVER "data\n";
     $s = <SERVER>;
     &checkResponse ("354");
     print SERVER "Subject: $subject\n";
     print SERVER "From: $from\n";
     print SERVER "To: $to\n";
     print SERVER "Content-type: text\/plain; charset=windows-1251\n";
     print SERVER "\n";
     print SERVER "$mail\n";
     print SERVER "\n.\n";
     $s = <SERVER>;
     &checkResponse ("250");
     print SERVER "quit\n";
     $s = <SERVER>;
     &checkResponse ("221");
     close (SERVER);
     select (STDOUT);
     return 0;
 }
 
 # вызов функции
 
 $sendError = &sendMail ($from, $to, $subject, $mail);
 if ($sendError)
 {
     # обрабатываем ошибку
 }
 else
 {
     # всё OK
 }
 --- ifmail v.2.15dev5
  * Origin: MTU-Intel ISP (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Форма -> е-меил   Roman Reznichenko   08 Feb 2001 13:56:17 
 Re: Форма -> е-меил   Roman Kondrashin   09 Feb 2001 11:30:08 
 Форма -> е-меил   Ђ­¤аҐ© Џ   09 Feb 2001 19:17:26 
Архивное /ru.cgi.perl/910423a0d84a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional