Perl でメール送信(Net::SMTP)

Net::SMTP

・インストール

[root]# cpan Net::SMTP

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

#############
# Net::SMTP
#############

use strict;
use warnings;
use Net::SMTP;
use Encode qw( decode encode );

# SMTP サーバーへの接続を確立
my $ns_obj = Net::SMTP->new(
                            'www.example.com',
                            Timeout => 60,   # デフォルト 120秒
                           );

# 送信元
$ns_obj->mail( 'foo@example.com' );

# 送信先
my @to = ( 'bar@example.com', 'baz@example.com' );
# SkipBad => 1、不正なアドレスを無視し成功したアドレスを返す
my @ok = $ns_obj->recipient( @to, {SkipBad => 1} );

# 件名
my $subject = "Subject: 件名\n";   # 改行が無いと本文が件名に含まれる
$subject = encode( 'MIME-Header-ISO_2022_JP', decode( 'utf8', $subject ) );

# 本文
my $message = <<"EOD";
本文
本文
EOD
$message = encode( 'ISO-2022-JP', decode( 'utf8', $message ) );

# メッセージ開始
$ns_obj->data();

$ns_obj->datasend( $subject );
$ns_obj->datasend( $message );

# メッセージ終了
$ns_obj->dataend();

# 接続を切断
$ns_obj->quit;