#!/usr/bin/perl
#
# mail_convert.pl - メール用に文字コードと改行コードを変換する
#                   のを勉強するための試作プログラム
#
    $MAINTAINER  = 'Morikawa Yasuhiro <morikawa@ep.sci.hokudai.ac.jp>';
    $UPDATE      = '2004/08/31';
    $VERSION     = '0.1';
    $URL         =
    'http://www.ep.sci.hokudai.ac.jp/~morikawa/perl/mail_convert/SIGEN_PUB.htm';

# jcode.pl の使い方はこちら
#   http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
require "jcode.pl";

sub Help() {
    print STDOUT <<EOF;
  mail_convert.pl: mail convert test program.
    USAGE:
      mail_convert.pl mailto file

  mail_convert Version $VERSION, Last Update: $UPDATE.
  $MAINTAINER All Right Reserved.

EOF
}

if ($#ARGV < 1){
    &Help;
    exit ;
}

$mailto = 'hogehoge@foo.ne.jp';
$charcode = 'iso-2022-jp';
#$charcode = 'shift_jis';
$subject = 'MailConvert';
$user = $ENV{'USER'} || $ENV{'LOGNAME'} || $<;

$mailto = $ARGV[0] || die "usage: mail_convert.pl mailto file\n";
$input  = $ARGV[1] || die "usage: mail_convert.pl mailto file\n";

# GMT Time
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
$date = sprintf("%04d-%02d-%02dT%02d:%02d-00:00",
  $year + 1900, $mon + 1, $mday, $hour, $min);

# Local Time (Assume Japan Time)
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$localdate = sprintf("%04d-%02d-%02dT%02d:%02d+09:00",
  $year + 1900, $mon + 1, $mday, $hour, $min);


open(MAIL, "| nkf | /usr/lib/sendmail $mailto"); # 文字コードを JIS へ変換
#select(MAIL);

print MAIL<<EOF;
From: $user\@gfd-dennou.org
To: $mailto
Subject: ${subject}-Test $date
Mime-Version: 1.0
Content-Type: Text/Plain; charset=$charcode
Content-Transfer-Encoding: 8bit

EOF

open(INPUT, "$input");
while (<INPUT>) {
    $code = &jcode::getcode(\$_);  # "jis","sjis","euc"のいずれかが返る
}
close(INPUT);

print MAIL<<EOF;
At $date ($localdate),
  user $user send this messages.
Following Messages Code is $code.

EOF

open(INPUT, "$input");
while (<INPUT>) {
    # 改行コードをローカルプラットフォームに
    #  http://www.bayashi.net/st/pdmemo/chara.html
    s/\x0D\x0A|\x0D|\x0A/\n/g;
    #print STDOUT;
    print MAIL;
}

close(INPUT);
close(MAIL);

exit 0
