メールで送信するFAX

これでスキャンするとPDFにしてくれるスキャナーがあれば

スキャンデーターをメールすればOK

ファックス複合機はいらなくなる

やっとメーカーの縛りから開放できる

実現の手順

メールのタイトルをFAX送信先の電話番号にする

この番号を抽出する

本文はPDFファイルを添付してメールする

抽出したデーターをsendfaxにあてはめてFAXする

メールアドレスはFAXだけのアドレスを作る

わたしはgmailをアドレスを作った

popを有効にする必要がある

専用アドレスのメールをfetchmailでhylafaxサーバーに持ってくる

crontabを使い3分おきぐらいに実行させる

実際の手順

$ sudo apt-get install fetchmail nkf

$ mkdir ~/sendfax

$ mkdir ~/sendfax/tmp

$ vi ~/.fetchmailrc

poll pop.gmail.com
protocol pop3
port 995
user ‘ファックス専用アドレス@gmail.com’
pass ‘パスワード’
ssl
mda ‘~/sendfax.sh’

$ vi ~/sendfax.sh

#!/bin/sh

err_mail() #エラー発生時にsendmailでメール送信。
{
{
echo “From: fujimoto.takahiko.fax@gmail.com”
echo “To: “$1
echo “Subject: HylaFax MailFax”
echo
echo “FaxNo: “$2
echo $3
}|/usr/sbin/sendmail -i -t
exit 0
}

dest=~/sendfax/tmp #一時保存先
tmp=”$dest/$$”
nkf -w > $tmp-mail #メールをMIMEデコードして保存
faxno=`grep -i “^Subject:” $tmp-mail | sed -e “s/subject: //i”` #タイトル取得
mailadr=`grep -i “^Return-Path:” $tmp-mail | sed -e “s/Return-Path: <//i” -e”s/>//”` #メールアドレス取得
#添付ファイル取得処理
grep -i ‘^Content-Type:’ “$tmp-mail” |
grep “multipart/mixed” |
head -n 1 |
sed ‘s/..*boundary=//’ |
tr -d ‘”‘ > $tmp-boundary
awk -v b=”^–$(cat $tmp-boundary)” -v f=”$tmp-F” \
‘{if($0~b){a++};print > f a}’ “$tmp-mail”
grep -i ‘filename=’ $tmp-F* |
sed ‘s/^\([^:][^:]*\):..*filename=\(..*\)/\1 \2/’ |
tr -d ‘”‘ |
while read a b ; do
sed -n ‘/^$/,$p’ “$a” |
base64 -d > “$a-${b}”
done
#添付ファイルここまで
find $dest -name “* *” | rename ‘s/ /_/g’  #ファイル名のスペースをアンダーバーに置換
#PDFファイルのリストを作成。PDFファイルがない場合はエラーメールを送信。
file $tmp-* |grep -i “PDF DOCUMENT” |sed -e “s/:.*//” > ${tmp}filelist
if [ ! -s ${tmp}filelist ];then
err_mail $mailadr $faxno “No PDF File”
fi
#GhostscriptでPDFファイルを処理。全ファイルをA4縦に変換して連結。処理失敗時はエラーメールを送信。
gs -dNOPAUSE -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE=a4 -dBATCH -sDEVICE=pdfwrite -dAutoRotatePages=/None -o ${tmp}faxdata.pdf -f `cat ${tmp}filelist`
if [ $? = 1 ];then
err_mail $mailadr $faxno “Ghostscript Error”
fi
#FAX送信 エラー時はメール送信。
sudo sendfax -f $mailadr -n -d $faxno ${tmp}faxdata.pdf
if [ $? = 1 ];then
err_mail $mailadr $faxno “SENDFAX ERROR”

fi
#一時ファイルを削除して終了。
rm $tmp*
exit 0

$ chmod 600 ~/fetchmailrc

$ chmod +x ~/sendfax.sh

これで一旦タイトルにファックス先の電話番号、本文は添付PDFファイルを専用アドレスにメールする

ファックスが送られたら成功

上記のスクリプトはここで拝借させていただきました

非常に助かりました

ただsendfax命令でパスワードを聞いてくるのでここで停止してしまいます

sudo sendfax に変更しました

最後に3分間隔で/usr/bin/fetchmailを実行する

$ crontab -e

*/3 * * * * /usr/bin/fetchmail

シェアする

  • このエントリーをはてなブックマークに追加

フォローする