メール送信

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Encode;
use Date::Simple 'today';
use Email::Send;
use Email::MIME::Creator;

my $SUBJECT      = '件名です';
my $FROM         = 'from@example.jp';
my $TO           = 'to@example.jp';
my $SMTP_SERVER  = '192.168.0.1';
my $BODY_FILE    = '/home/turbo/body.txt';

# メール送信
sub send_mail {
    my ($subject, $body) = @_;

    my $mail = Email::MIME->create(
        header => [
            From    => $FROM,
            To      => $TO,
            Subject => Encode::encode('MIME-Header-ISO_2022_JP', $subject),
        ],
        attributes => {
            content_type => 'text/plain',
            charset      => 'iso-2022-jp',
            encoding     => '7bit',
        },
        parts => [
            Encode::encode('iso-2022-jp', $body),
        ],
    );

    my $sender = Email::Send->new({
        mailer => 'SMTP',
        mailer_args => [ Host => $SMTP_SERVER ],
    });
    $sender->send($mail);
}

my $subject = sprintf("%s %s", $SUBJECT, today());

my $body;
open my $fh, '<', $BODY_FILE or die $BODY_FILE;
$body .= do { local $/; <$fh> };
close $fh;
$body = decode("utf8", $body);

send_mail($subject, $body);