|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Averbuh 2:4625/69.123 13 Jan 2001 23:54:00 To : All Subject : Как вставить поле Subj --------------------------------------------------------------------------------
і АДЩ ДБ
Hello, All! Как поживает твой hерц?
Иммется скрипт для отправки почты через smtp.
Hо вот письма приходят без поля "subj".
Как сделать так, чтобы оно присутствовало?
=== Cut ===
#!/usr/local/bin/perl -w
use strict;
use Socket;
my $inet_EOL = "\x0d\x0a";
my $host = my $username = my $password = my $server = my $answer = '';
my $port = my $iaddr = my $paddr = my $index = 0;
sub smtp {
my %db = ( 'mail' => 'smtp.svitonline.com:25', 'chat' =>
'waf:passwd1:chat.ru:25', 'rbc' => 'waf:passwd2:mail.rbc.ru:25' );
my $configfile = 'mailer.con';
my $from = my $to = my $subj = my $body = my $sign = my $date = '';
my $answer_file = 'smtp.ans';
return( -1 ) unless( open( CONF, "<$configfile" ) && -r $configfile );
$body = '';
while( <CONF> ) {
chomp;
$_ =~ s/^FROM\s(.*)/$from = $1/e;
next if( $1 );
$_ =~ s/^TO\s(.*)/$to = $1/e;
next if( $1 );
$_ =~ s/^SUBJ\s(.*)/$subj = $1/e;
next if( $1 );
# $_ =~ s/^BODY\s(.*)/$body .= "$1\n"/e;
# next if( $1 );
$_ =~ s/^SIGN\s(.*)/$sign = $1/e;
next if( $1 );
$_ =~ s/^DATE\s(.*)/$date = $1/e;
next if( $1 );
$body .= "$_\n" if( defined( $_ ))
}
close( CONF );
$body .= "\n\n$sign" if( $sign );
$body .= "\n$date" if( $date );
print "$from\n";
print "$to\n";
print "$subj\n";
print "$body\n";
$username=''; $password='';
$host='smtp.svitonline.com'; $port=25;
return( -2 ) unless( open( OUT, ">$answer_file" ) || -w $answer_file );
return( -3 ) unless( defined( $iaddr = inet_aton( $host )));
return( -4 ) unless( socket( SERVER, PF_INET, SOCK_STREAM, getprotobyname(
'tcp' )));
$paddr = sockaddr_in( $port, $iaddr );
return( -5 ) unless( connect( SERVER, $paddr ));
select( OUT ); $| = 1; select( SERVER ); $| = 1; select( STDOUT );
binmode( OUT ); binmode( SERVER );
$server = <SERVER>;
$answer .= $server;
unless( $server =~ /^220/ ) {
print OUT $answer;
return( -6 )
}
print SERVER "MAIL FROM:$from$inet_EOL";
$answer .= "MAIL FROM:$from$inet_EOL";
$server = <SERVER>;
$answer .= $server;
unless( $server =~ /^250/ ) {
print OUT $answer;
return( -8 )
}
print SERVER "RCPT TO:$to$inet_EOL";
$answer .= "RCPT TO:$to$inet_EOL";
$server = <SERVER>;
$answer .= $server;
unless( $server =~ /^250/ ) {
print OUT $answer;
return( -9 )
}
print SERVER "DATA$inet_EOL";
$answer .= "DATA$inet_EOL";
$server = <SERVER>;
$answer .= $server;
unless( $server =~ /^354/ ) {
print OUT $answer;
return( -10 )
}
print SERVER $body;
$answer .= $body;
print SERVER "$inet_EOL.$inet_EOL";
$answer .= "$inet_EOL.$inet_EOL";
$server = <SERVER>;
$answer .= $server;
unless( $server =~ /^250/ ) {
print OUT $answer;
return( -11 )
}
print SERVER "QUIT$inet_EOL";
$answer .= "QUIT$inet_EOL";
$server = <SERVER>;
$answer .= $server;
unless( $server =~ /^221/ ) {
print OUT $answer;
return( -12 )
}
print OUT $answer;
close( OUT );
close( SERVER );
return( 0 )
}
print 'result: \'' . smtp() . "'\n"
=== Cut ===
С уважением, Alexander
Так, идите мыть руки, All!
mailto: alav@gmx.net http://alhome.virtualave.net
http://haverim.virtualave.net
> Если ты будешь бройгес, я тебе сделаю такой цурыс, что ты всю жизнь будешь
> иметь нахес!
--- GoldED 2.50+
* Origin: An apple a day keeps the doctor way. (2:4625/69.123)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/39713a60dd50.html, оценка из 5, голосов 10
|