Home > 自宅マシンメール送信計画 > Perlモジュールで自力送信の巻
自宅マシンメール送信計画
- 自宅サーバからメール送信 -
アイルのビジネスパートナー募集中!説明会も実施予定。

Perlモジュールで自力送信の巻

まずは単純にメール送信するプログラムを書いてみます。

■メール送信プログラム
#!/usr/local/bin/perl

#---------------------------------------
#  smtp.cgi
#  Copyright (c) KentWeb
#---------------------------------------

use IO::Socket;
use CGI::Carp qw(carpout fatalsToBrowser);

# 送信元アドレス
$eml_from = 'xxx@xxx.xxx';

# 送信先アドレス
$eml_to = 'xxx@xxx.xxx';

# SMTPサーバ
$serv = "127.0.0.1";

# ポート番号(通常は25)
$port = 25;

# バイナリモード(Windows対策)
binmode(STDOUT);

# 接続
$sock = IO::Socket::INET->new(
                                 Proto => "tcp",
                                 PeerAddr => $serv,
                                 PeerPort => $port,
                                 ) || die "接続失敗";

# バッファリングしないようにする
$sock->autoflush(1);
&res(220, 'flush失敗');

# HELOコマンド
print $sock "HELO $server\r\n";
&res(250, 'HELO失敗');

# MAILコマンド
print $sock "MAIL FROM: $eml_from\r\n";
&res(250, 'MAIL失敗');

# RCPTコマンド
print $sock "RCPT TO: $eml_to\r\n";
&res("250|251", 'RCPT失敗');

# DATAコマンド
print $sock "DATA\r\n";
&res(354, 'DATA失敗');

# 本文
$body = '';
$body .= "To: $eml_to\r\n";
$body .= "From: $eml_from\r\n";
$body .= "Subject: test mail\r\n\r\n";
$body .= "This is a test mail.\r\n";
$body .= ".";

# 本文送信
print $sock "$body\r\n";
&res(250, '本文送信失敗');

# QUITコマンド
print $sock "QUIT\r\n";
close $sock;

# HTML表示
print <<EOM;
Content-type: text/html

<html>
<body>
送信OK
</body>
</html>
EOM

#-------------------------------------------------
#  レスポンスチェック
#-------------------------------------------------
sub res {
	my ($str,$err) = @_;

	my $res = <$sock>;
	if ($res !~ /^$str/) {
		die "$err : $res\n";
	}
}
【解説】
上記のプログラムにて、送信元と送信先のアドレスをご自分のメールアドレスに指定して、(Radishを起動させた状態で)自宅サーバから実行するとメールは発信されることになります。

【ダウンロード用】smtp.cgi

次のページにて、メールフォームである Postmailで送信する方法を紹介します。

BACK UP NEXT
back Top Next