雑なメモ(無保証)

perlでSMTPメール送信するスクリプト


Rev.1を表示中。最新版はこちら

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;
my $body    = "This E-mail is automatically transmitted from Proxy server.\n"
             ."The access log of squid is appended.\n\n"
             ."The execution result of command \"df -h\" is displayed as follows.\n\n"
             .$df;                        # BODY


# ファイルがあるかチェック
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;


最終更新 2006/05/27 18:00:17 - llinfo_arp
(2006/05/27 18:00:17 作成)


Amazon