## blatjもどき ---- blatj.pl ## ## 2007/07/20 ## 江端智一 ## E-mail:http://www.kobore.net/mailAddress.gif ## ## blatjは、コマンドでファイルの内容をメールで送付できる ## 優れたソフトですが、SMTP認証に対応ができないようです。 ## http://www.piedey.co.jp/blatj/ ## ## 「Windows上で私の用途のみで動けば良い」というポリシーの元、 ## エラー処理も一切ありません。検証等は一切しておりません。 ## 引数も面倒なので対応していません。 ## ## 自己責任にて使用して下さい。 ## ## [history] ## Encode::from_toで不具合発生。最新のActivePerlに入れ替えることで解決 ## ## Subject等に文字化け発生→このプログラムのファイルの文字コードを ## shiftJISに変更 ## ## $smtp->authが全く動かすために、SASLをインストール ## ## ## 使い方 ## blatj.pl [ファイル名] -t [送信先アドレス] ## Sample: ## c:\bin > blatj.pl テキストファイル.txt -t someone@mail.com ## use LWP::Simple; use Net::SMTP; use Encode; if (@ARGV < 2) { print "Usage: blatj.pl [filename] -t [to_address] -s [subject]"; exit(0); } $subject = $ARGV[0]; # "-s"によるsubjectの指定がなければ、 # ファイル名をsubjectにする for($val = 1; $val < @ARGV ; $val++) { if ($ARGV[$val] eq "-t") { $to_address = $ARGV[$val+1]; } if ($ARGV[$val] eq "-s") { $subject = $ARGV[$val+1]; } } my $smtp = Net::SMTP->new('mailbox.jp') or die "Couldn't connect to server; $!"; $smtp->auth ('who@where.net', 'mailpasswd' ) or die "Could not authenticate $!"; $smtp->mail('who@where.net'); # 本当のfrom(これは替えられない) # SMTP認証と同じアドレスにすること $smtp->to($to_address); # 本当の行き先アドレス $smtp->data(); $smtp->datasend("X-Mailer: Psude blatj perl program\n"); $smtp->datasend("From: who\@where.net\n"); #見せるFromアドレス $to_address2 = $ARGV[1]; $to_address2 =~ s/@/\@/g; # "@" -> "\@"に変換 $to_address2 = "To: " . $to_address2 . "\n"; # 改行文字追加 $smtp->datasend($to_address2); #見せるToアドレス Encode::from_to($subject,"shiftjis","iso-2022-jp"); #文字コード変換 $smtp->datasend("Subject: $subject \n"); $smtp->datasend("\n"); # メールヘッダ終了 open( FILE, $ARGV[0] ) || die "not open file"; $body = ""; while ($xx = ) { $body = $body.$xx; # この部分はもっと良い処理があると思う } # が、面倒なので、そのまま Encode::from_to($body,"shiftjis","iso-2022-jp"); #文字コード変換 $smtp->datasend($body,"\n"); $smtp->dataend(); $smtp->quit; # Close SMTP connectin