Perl でメール送信(MailTools)

MailTools(一番簡単)

・インストール

[root]# cpan Mail::Internet

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

##################################
# MailTools(日本語文字化け回避)
##################################

use strict;
use warnings;
use Mail::Header;
use Mail::Internet;
use Encode qw( decode encode );

# ヘッダー
my $hd_obj = Mail::Header->new();
$hd_obj->add( From    => 'foo@example.com' );
$hd_obj->add( To      => 'bar@example.com' );
#$hd_obj->add( Cc      => ''                );
$hd_obj->add(
    Subject => encode( 'MIME-Header-ISO_2022_JP', decode( 'utf8', '件名' ) )
);
# 'Content-Type' => 'text/plain; charset=utf8;' で文字化け回避
$hd_obj->add( 'Content-Type' => 'text/plain; charset=utf8;' );
$hd_obj->add( 'Content-Transfer-Encoding' => '8bit' );

# 文字列として、ヘッダを返す
# my $hd_str = $hd_obj->as_string;
# say $hd_str;

# 本文
my $message = <<"EOD";
本文
本文
EOD

# Mail::Internet オブジェクト作成
my $mi_obj = Mail::Internet->new(
                                 Header => $hd_obj,
                                 Body   => [$message],
                                 Modify => 1,   # 一部メーラ向け、ヘッダ再構成
                                );

# 文字列として、メッセージ(ヘッダ + 本文)を返す
# my $mi_str = $mi_obj->as_string;
# say $mi_str;

# メール送信
$mi_obj->smtpsend();