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の日記
コメント