Perl でメールを送る関数です。
日本語対応で、添付ファイルを送信できます。
メール送信サブルーチン
SendAttachedMail()
メールを送信します。
添付ファイルも送信できます。
題名、本文、添付ファイル名とも日本語対応です。
書式:
SendAttachedMail( 差出人 , 宛先 , 題名 , 本文 , 添付ファイル1のパス , 添付ファイル2のパス , … );
SendAttachedMailと使用方法のサンプルです。
下記のコードをUTF-8 で保存して使用して下さい。
use Email::MIME;
use IO::All;
use File::MMagic::XS;
use utf8;
use File::Basename;
use Email::Sender::Simple qw(sendmail);
sub SendAttachedMail {
my @parts;
my $m = File::MMagic::XS->new();
push @parts ,
Email::MIME->create(
attributes => {
content_type => "text/plain",
charset => 'ISO-2022-JP',
encoding => '7bit'
},
body_str => $_[3]
);
for( my $i = 4 ; $i < @_ ; $i++ ){
push @parts ,
Email::MIME->create(
attributes => {
content_type => $m->get_mime( $_[$i] ),
encoding => 'base64',
name => Encode::encode( 'ISO-2022-JP', basename($_[$i]) ),
},
body => io( $_[$i] )->binary->all,
);
}
my $email = Email::MIME->create(
header => [
From => Encode::encode( 'MIME-Header-ISO_2022_JP', $_[0] ),
To => Encode::encode( 'MIME-Header-ISO_2022_JP', $_[1] ),
Subject => Encode::encode( 'MIME-Header-ISO_2022_JP', $_[2] )
],
parts => [ @parts ],
);
sendmail($email);
}
SendAttachedMail(
'"送信元" <user001@example.com>',
'"宛先" <person6@example.net>' ,
'題名',
"本文1行目\n2行目\n3行目",
"平仮名.pdf" ,
"test.tar.gz" );
なお、実行時に
replaced vertical whitespace in From header with space; this will become fatal in a future version at XXX.pl line YYY.
のような表示が出ることがあります。
これは
Encode::encode( ‘MIME-Header-ISO_2022_JP’, $_[0] )
の結果に改行文字が入ることがあり、その改行文字を空白に変換されたことを示します。
これにより正しくメール送信が行われる為、問題ありません。
参考
My Memoz – Index
MIME::Liteのインターフェースが好きだ – サンプルコードによるPerl入門 ~ 安定と信頼のPerlを学ぼう ~
Email::Sender+Email::MIMEで添付ファイル | UCWD-Studio.【ホームページ制作 / 京都】
Email::MIME – search.cpan.org
第20回 Email::Sender:メールを送信する:モダンPerlの世界へようこそ|gihyo.jp … 技術評論社
ファイル名 or 拡張子から content-type(MIME type) を決める – tsucchiの日記
コメント