Perlでメール送信
アップグレード通知用の文章を作成するところから1歩進めてみた。
ちなみに、Perlでメールを送る部分に関しては、下記ホームページを参照した。
河馬屋二千年堂's Page
http://homepage3.nifty.com/hippo2000/index.htm
jcode.plとJcode.pmを使う例が掲載されていたのだが、jcode.plを使うと、文字化けする箇所があったので、Jcode.pmを使うことにした。
ちなみに、jcode.plで文字化けする場合は、文字化けする文字の間に「\」を入れると文字化けしなくなる。例えば、「表示」という文字が文字化けする場合は、「表\示」としてやることで、文字化けしなくなる。
「\」は、正式には、バックスラッシュで、Windowsの日本語版では、バックスラッシュのフォントが無いから、これを代用しているだけ。バックスラッシュって、「\」の半角のやつ。わかりやすいのは、英数字でキーボードの「ろ」のキーを押してみれば、キーに表示されている「\」ではなく、「\」が入力されるはず。
今回、jcode.plを避けたのは、一度、試しに送ってみないと、どの文字が化けるのか確認できないという点だ。これだと、作成した文章を送って確認するという手間が増えることになる。
今回は、上記ホームページの「HTMLメールの例」を元にして、一部を修正して使うことにした。
jcode.pmを使う場合、日本語の箇所は、以下のようになる。
jcode('日本語部分')->変換コード
ちなみに、「Perlの例.html」という英字と日本語が混合している場合は、下記のようになる。
'Perl'.jcode('の例')->mime_encode().'.html'
今回みたいに複数行にまたがる日本語の文章を書く場合は、下記の用にすれば、書くことができる。要は、終了したい場所に「')」を書いて閉ざせばいいだけ。
jcode(' 日本語の文章 ')
今回は、htmlメールではなくて、textメールにしたかったので、「#1. 送信用テキストの作成」を削除して、以下のようにした。
$oMime->attach( Type => 'text/plain;charset="iso-2022-jp"', Data => jcode(' 本文の内容 ')->jis, Encoding => '7bit' );
「Perlの例.pdf」というファイルを添付して送る場合は、Filenameを追加しておくといい。Pathだけだと、Perl以降の日本語が文字化けするし、フルパスで表示されるが、Filenameを付けておくと、日本語部分が文字化けしないで表示することができる。
$oMime->attach( Path => 'c:\My Documents\Perlの例.pdf', Filename => 'Perl'.jcode('の例')->mime_encode().'.pdf', Type => 'application/octet-stream', Encoding => 'Base64' );
とりあえず、以上のことを踏まえて、プログラムを作成し、hoge.txtという名前で保存しておく。
次に、以下のプログラムを作成した。このプログラムが、メインのプログラムになる。特徴は、以下の通り。
- コンソール画面に新旧バージョンの番号を記入する画面が表示される。
- バージョン番号を記入すると、hoge.txtの該当部分を置換する。
- hoge.txtをhoge.plに変換する。
- hoge.plを実行し、メールを送信する。
#! /usr/local/bin/perl #******************************************************** # メインプログラム (Perl版) #******************************************************** # コンソール表示部 print "古いバージョンの番号を入力して[Enter] を押してください。\ n"; $old = <STDIN>; chomp $old; print "新しいバージョンの番号を入力して[Enter] を押してくださ い。\n"; $new = <STDIN>; chomp $new; # ファイル処理部 open (IN,"hoge.txt") || die "ファイルが見つかりませんでした。"; open (OUT,">hoge.pl"); while(<IN>){ s/newver/$new/g; s/oldver/$old/g; print OUT; } close IN; close OUT; # メール送信プログラムを起動 exec("perl hoge.pl");