Solarisで、Perlで、smtpで、メール送信をしていいます。 ポート番号25を使って、smtpサーバに接続してメールの 送信をしているのですが、処理は、正常に終わるのですが、 メールが送信されません。届きません。 どこがいけないのでしょうか。 ------------------------------ use Socket; $server = 'SMTPサーバ' ; $from = '送信元アドレス' ; $to = '送信先アドレス' ; $subject = 'テストメール' ; $data = 'メール送信テスト' ; $send_data = 'X-Mailer: SMTP tool' . "\n"; $send_data .= 'MIME-Version: 1.0' . "\n"; $send_data .= 'Content-Type: text/plain; charset=iso-2022-jp' . "\n"; $send_data .= 'From: '. $from . "\n"; $send_data .= 'To: '. $to . "\n"; $send_data .= 'Subject: ' . $subject . "\n"; $send_data .= "\n"; $send_data .= $data; $port = getservbyname('smtp','tcp'); $struct = sockaddr_in($port,inet_aton($server)); socket(SH, PF_INET, SOCK_STREAM, 0) || die("ソケットの生成失敗 $!") ; connect(SH, $struct ) || die("接続失敗 $!") ; select(SH); $| = 1; select(STDOUT); $respons = <SH> ; unless($respons =~ /^220/) { close(SH); die("接続失敗 $!") ; } $command = "HELO $server\n"; print SH $command ; $respons = <SH> ; &decode(\$respons) ; unless($respons =~ /^250/){ close(SH); die("HELOコマンド失敗 $!") ; } $command = "MAIL FROM:$from\n"; print SH $command ; $respons = <SH> ; &decode(\$respons) ; unless($respons =~ /^250/){ print SH "RSET\n"; close(SH); die("MAILコマンド失敗 $!") ; } $command = "RCPT TO:$to\n"; print SH $command ; $respons = <SH> ; &decode(\$respons) ; unless($respons =~ /^25[0|1]/){ print SH "RSET\n"; close(SH); die("RCPTコマンド失敗 $!") ; } $command = "DATA\n"; print SH $command ; $respons = <SH> ; &decode(\$respons) ; unless($respons =~ /^354/){ print SH "RSET\n"; close(SH); die("DATAコマンド失敗 $!") ; } $command = "$send_data\n.\n"; print SH $command ; $respons = <SH> ; &decode(\$respons) ; unless($respons =~ /^250/){ print SH "RSET\n"; close(SH); die("本文、ヘッダ部送信失敗 $!") ; } $command = "QUIT\n"; print SH $command ; close(SH); select(STDOUT); print "MAILは正常に送信されました。\n"; sub decode{ my $inf = $_[0]; $$inf =~ s/\x0D\x0A|\x0D|\x0A/\n/g; } ----------------------------- |