#!/bin/sh

# Hylafaxを使ってメール添付ファイル（PDF）をFAX送信する

# error時にメールする
err_mail()
{
  {
    echo "From: <メールアドレス>"
    echo "To: "$1
    echo "Subject: HylaFax MailFax Error"
    echo
    echo "FaxNo: "$2
    echo $3
  } | /usr/sbin/sendmail -i -t                                                  # mail送信
  rm $dest/*                                                                    # 全tempファイルを削除
  exit 0
}

dest=~/sendfax/tmp                                                              # temp保存先
tmp="$$"                                                                        # pidをファイル名の先頭にする

nkf -w > $dest/$tmp-mail                                                        # mailをutf8(mimeデコード)に変換

faxno=`grep -i "^Subject:" $dest/$tmp-mail | sed -e "s/subject: //i"`           # FAX送信先番号を取得
mailadr=`grep -i "^Return-Path:" $dest/$tmp-mail | sed -e "s/Return-Path: //"`  # Return-Pathから返却メールアドレスを取得
if [ "$mailadr" = "" ];then                                                     # 設定されてなかったら
  froml=`grep -i -A 1 "^from:" $dest/$tmp-mail`                                 # Fromから取得する
  if [ "`echo $froml | grep '<.*>'`" != "" ]; then
    mailadr=`echo $froml | sed -e 's/.*<\(.*\).*>.*/\1/'`
  else
    mailadr=`echo $froml | sed -e 's/^[Ff]rom://g' -e 's/[ ]*\([^ ]*\).*/\1/'`
  fi
fi

munpack -q -C $dest $tmp-mail                                                   # 添付ファイルを取り出す
find $dest -name "*.*" | grep " " | sed -e 's/.*/"&"/; p; s/ /_/g' | xargs -r -n2 mv    # file名の" "を"_"に置換

file $dest/*.* | grep -i 'PDF' | sed -e "s/:.*//" > $dest/${tmp}filelist        # pdfファイルのリスト作成（複数ファイル用）
if [ ! -s $dest/${tmp}filelist ];then
  err_mail $mailadr $faxno "No PDF File"                                        # pdfファイルがない場合はerror mailを送信
fi

# gsで全てのpdfファイルをマージする
gs -dNOPAUSE -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 -dBATCH -sDEVICE=pdfwrite -dAutoRotatePages=/None -o $dest/${tmp}faxdata.pdf -f `cat $dest/${tmp}filelist`
if [ $? = 1 ];then
  err_mail $mailadr $faxno "Ghostscript Error"                                  # error時はerror mailを送信
fi

pass=`grep -i pass: $dest/*.d* | sed 's/<[^>]*>//g' | sed -e 's/^[^:]*://'`     # 本文のpass:以降を取り出す
if [ "$pass" = "zzzzzzz" ]; then                                                # passが正しいかチェックする
  sendfax -n -m -d $faxno $dest/${tmp}faxdata.pdf                               # 正しければFAX(fine mode)を送信する
  if [ $? = 1 ];then
    err_mail $mailadr $faxno "SENDFAX ERROR"                                    # error時はerror mailを送信
  fi
else
    err_mail $mailadr $faxno "PASSWORD ERROR"                                   # 正しくなければerror mailを送信
fi

rm $dest/*                                                                      # 全tempファイルを削除

exit 0
