perlのMIME::Liteならメール送信はすぐ書ける。その2

メール送信のモジュールMIME::Liteを利用してそういえばこんなの作りました。のコード。
PHPMailerと比較してPerlは結構コーディングが楽だと感じました。

#!/usr/bin/perl
#
# $Id: perlmailer.pl 35560 2010-05-29 01:08:30Z watanabefg $
#
use strict;
use warnings;
use Encode;
use utf8;
use MIME::Lite;
use File::Basename;

my $mail_from = $ENV{'MAIL_FROM'};
my $mail_to = $ENV{'MAIL_TO'};
my $mail_subject = decode('shiftjis', $ENV{'MAIL_SUBJECT'});
my $mail_body = decode('shiftjis', $ENV{'MAIL_BODY'});
my @mail_attach = ();

my $message = MIME::Lite->new(
   From => $mail_from,
   To => $mail_to,
   Subject => encode('MIME-Header-ISO_2022_JP', $mail_subject),
   Type => 'multipart/mixed',
);

# メール本文
$message->attach(
   Type => 'text/plain; charset="ISO-2022-JP"',
   Data => encode('ISO-2022-JP', $mail_body),
);

# 添付ファイルを取得
if ($ENV{'MAIL_ATTACH'} ne ""){
   @mail_attach = split(/\,/, $ENV{'MAIL_ATTACH'});
}

if ($#mail_attach != -1){
   # 添付をつけて送信
   foreach my $attach_file (@mail_attach){
       my $file_name = basename($attach_file);
       $message->attach(
           Type => 'application/octet-stream',
           Path => $attach_file,
           Filename => $file_name,
           Disposition => 'attachment',
       );
   }
}

$message->send('smtp', 'xxxx');

1;

__END__
メールを送信します。
以下のようにシェル内でMAIL_FROM, MAIL_TO, MAIL_SUBJECT, MAIL_BODYの指定が必要です。
シェルはshiftjisで書かれていることを想定しています。
MAIL_ATTACHは適宜つけてください。(, つきで複数指定が可能です。)
ちなみに改行は対応していません。あしからず。

sample)
# メール送信モジュールを実行
 setenv MAIL_FROM    xxxxxxxxxxx
 setenv MAIL_TO      xxxxxxxxxxx
 setenv MAIL_SUBJECT "日本語もいけるよ"
 setenv MAIL_BODY    "日本語もいけるよ"
 setenv MAIL_ATTACH  /tmp/test_$PID

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
何かぼんやりと勉強会をしたいなぁと思っています。
ネタ募集中です。
関西で開催する予定ですので、関西の方はお楽しみに!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

コメント

このブログの人気の投稿

GAEでOAuthというかTwitter認証してみた。

Pray For Japanのまとめページつくりました。