perlでSMTPメール送信するスクリプト
perlモジュールをインストールする
CPANサーチとか言うところで必要なモジュールを検索してDLする。
http://search.cpan.org/
ダウンロードしたら解凍
> tar xvfz (ファイル名).tar.gz解凍したらMaikefileを作る
> cd (ファイル名) > perl Makefile.PLmakeする
> makeテストする(何の?)
> make testインストールする
> make install
perlでSMTPメール送信するスクリプト(添付ファイル付き)
#!/usr/bin/perl use Net::SMTP; use MIME::Entity; use POSIX qw(locale_h strftime); use MIME::Base64; use Authen::SASL; require MIME::Base64; require Authen::SASL; # 設定 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time()); my $date = sprintf("%d%02d%02d", (1900 + $year), ($mon + 1),$mday); # ログファイルの場所と名前 my $logdir = "/usr/local/squid/var/logs/"; my $logfile = "squid" . $date . ".zip"; # ついでにdfコマンドもやっとく my $df = `df -h`; # メールアカウント情報 my $sender = 'hogehoge@dmain.com'; # メールアドレス my $server = 'mail.domain.com'; # SMTPサーバー my $user = 'hogehoge'; # ユーザーID my $passwd = 'password'; # パスワード # メールヘッダ情報 my $from = 'hogehoge@domain.com'; # FROM my $to = 'pomupomu@domain.com'; # TO my $subject = "[PROXY]Squid access log -- "; # SUBJECT $subject .= $date; # BODY my $body = "This E-mail is automatically transmitted from Proxyserver.\n" ."The access log of squid is appended.\n\n" ."The execution result of command \"df -h\" isdisplayed as follows.\n\n" .$df; # ファイルがあるかチェック unless ( -r $logdir.$logfile) { exit; } # オブジェクト作成 my $smtp = Net::SMTP->new($server, Hello=>$server,Timeout=>60, Debug=>1); # 認証 $smtp->auth($user, $passwd) or die "AUTHENTICATION ERROR"; # ヘッダ部の組み立て $smtp->mail($sender) or die "SENDER ERROR"; $smtp->to($to) or die "RECIPIENT ERROR"; # データ部の組み立て(MIME::Entityによるデータの作成) $smtp->data() or die "SEND ERROR"; $oMime = MIME::Entity->build( From => $sender, # 送信元(データ部) To => $to, # 宛先(データ部) Subject => $subject, # 件名 Data => $body # 本文 ); # 添付ファイルをつける $oMime->attach( Path => $logdir . $logfile, Type => "application/x-compress", Encoding => "Base64" ); # 文字列に変換 $smtp->datasend($oMime->stringify) or die "SEND ERROR"; $smtp->dataend() or die "SEND ERROR"; #メール送信、SMTP接続の終了 $smtp->quit; |