Perl でメール送信(モジュール無し)

モジュール無し

・プログラム
#!/usr/bin/perl

#################################################
# モジュール無しメール送信(日本語文字化け回避)
#################################################

use strict;
use warnings;
use Carp qw( croak );
use Encode qw( decode encode );

# ヘッダ
my $from    = 'foo@example.com';   # '(シングルクォート)で囲まないと
my $to      = 'bar@example.com';   # @ が配列と見なされる
#my $cc      = '';
#my $bcc     = '';
my $subject = encode( 'MIME-Header-ISO_2022_JP', decode( 'utf8', '件名' ) );

# 本文がスペースで始まっていると、Subject(件名)に含まれてしまう
my $message = <<"EOD";
本文
本文
EOD

# 送信処理(postfix の sendmail 互換モード使用)
# -t : ヘッダから、To, Cc, Bcc を読み込む
# -f : エラーメール送信先
open my $mail, "|/usr/sbin/sendmail -t -f $from" or croak qq{can't open : $!};
flock $mail, 2;
print {$mail} "From: $from\n";
print {$mail} "To: $to\n";
#print {$mail} "Cc: $cc\n";
#print {$mail} "Bcc: $bcc\n";
print {$mail} "Subject: $subject\n";
# Content-Type: text/plain; charset=utf-8; で文字化け回避
print {$mail} "Content-Type: text/plain; charset=utf-8;\n";
print {$mail} "Content-Transfer-Encoding: 8bit;\n";
print {$mail} "$message\n";
close $mail or croak qq{can't close : $!};