#!/usr/bin/perl use Socket; $server = 'mta15.mail.yahoo.co.jp'; $from = 'from@test.com'; $to = 'keborin@yahoo.co.jp'; $h_from = 'h_from@test.com'; $h_to = 'h_to@test.com'; $subject = 'This is sample mail.'; $body = 'test ok?'; $head = 'From: '. $h_from . '<'. $h_from .'>' . "\r\n"; $head .= 'To: '. $h_to . "\r\n"; $head .= 'Subject: ' . $subject . "\r\n"; $head .= 'X-Mailer: sample mailer' . "\r\n"; $head .= 'MIME-Version: 1.0' . "\r\n"; $head .= 'Content-Type: text/plain; charset=iso-2022-jp' . "\r\n"; $head .= 'Message-Id: <00000000000000.00000000000@local.com.>' . "\r\n"; $head .= "\r\n"; $data = $head . $body . "\r\n" . '.' . "\r\n"; $port = getservbyname('smtp', 'tcp'); $struct = sockaddr_in($port, inet_aton($server)); socket(SOCK, PF_INET, SOCK_STREAM, 0) || die("socket $!"); connect(SOCK, $struct) || die("connect $!"); select(SOCK); $| = 1; select(STDOUT); unless( =~ /^220/){ close(SOCK); die("Don't 220 $!"); } talk("HELO $server\r\n", "250"); talk("MAIL FROM:<$from>\r\n", "250"); talk("RCPT TO:<$to>\r\n", "250"); talk("DATA\r\n", "354"); talk( $data, "250"); talk("QUIT\r\n", "221"); close(SOCK); select(STDOUT); print "success!!\n"; exit; sub talk{ print SOCK $_[0]; my $respons = ; $respons =~ s/\x0D\x0A|\x0D|\x0A/\n/g; unless($respons =~ /^$_[1]/){ print SOCK "RSET\r\n"; close(SOCK); die("Error: $_[0], $_[1]"); } }