添付ファイル付きのメールを送信する


 MIME::Liteモジュールを使うと簡単です。
 MIMEエンコードはEncodeモジュールでMIME-Header-ISO_2022_JPを使えばできるそうですが、手元の環境でできなかったので日本語部分の処理にはJcodeモジュールを使っています。
use strict;
use warnings;
use MIME::Lite;
use Jcode;

my $from = 'from@example.com'; # 送信元
my $to = 'to@example.com'; # 送信先
my $path = './send_data.gz'; # 添付するファイル(このファイルを読み込む)
my $filename = 'data.gz'; # 添付ファイル名(このファイル名でメールに添付する)
my $type = 'application/x-gzip'; # 添付ファイルタイプ
my $subject = 'サブジェクトです'; # サブジェクト
my $message = '本文です'; # 本文

# メールサーバの指定(省略時はsendmailコマンドを使用する)
MIME::Lite->send('smtp', 'mail.example.com');

$subject = jcode($subject)->mime_encode();
$message = jcode($message)->jis;

my $msg = MIME::Lite->new(
    From => $from,
    To => $to,
    Subject => $subject,
    Type => 'multipart/mixed',
);

$msg->attach(
    Type => 'text/plain; charset="iso-2022-jp"',
    Encoding => '7bit',
    Data => $message,
);

$msg->attach(
    Type => $type,
    Path => $path,
    Filename => $filename,
    Disposition => 'attachment',
);

$msg->send;

関連項目

メール送信
メールサブジェクトの作成
・メール受信