これを, 普段メインで使っている Mutt でもできたらいいなと思って, 設定してみた. 送信時に, 自前で用意したスクリプトを呼び出し, その中で, 30秒の遅延をいれる. 30秒以内にそのスクリプトを殺せば, 配送をキャンセルできる.
まず, 以下のスクリプト
.mutt/delay.sendmail を用意する.
(hoge@* のところで, 自分あてかどうかを判別する. 自分あてならすぐに配送する.)
#! /bin/bash
tmp=$(mktemp)
recpt_d=()
recpt_m=()
flags=()
rrr=''
cat >$tmp
while (($# > 0)); do
    case "$1$rrr" in
        -f)
            flags=("${flags[@]}" "$1" "$2")
            shift 2
            ;;
        --)
            rrr='--'
            shift
            ;;
        *)
            case "$1" in
                hoge@*)
                    recpt_m=("${recpt_m[@]}" "$1")
                    ;;
                *)
                    recpt_d=("${recpt_d[@]}" "$1")
                    ;;
            esac
            shift
            ;;
    esac
done
if (( ${#recpt_m[@]} > 0)); then
    /usr/sbin/sendmail "${flags[@]}" "${recpt_m[@]}" <$tmp
fi
if (( ${#recpt_d[@]} > 0)); then
    (sleep 30 && /usr/sbin/sendmail "${flags[@]}" "${recpt_d[@]}" <$tmp ; rm $tmp) &
else
    rm $tmp
fi
そして, .muttrc に以下の設定を書く.
set sendmail="$HOME/.mutt/delay.sendmail"送信を取り消したいときは, 以下のコマンドを30秒以内に.
killall delay.sendmail
0 件のコメント:
コメントを投稿