#!/bin/bash
T=$(mktemp)
trap "rm $T" 0 1 2 3 6 14 15
if tty -s; then
    "$@" 2>&1 | tee $T
    R=${PIPESTATUS[0]}
else
    "$@" > $T 2>&1
    R=$?
fi
if [ "$R" -ne 0 ]; then
(
    echo "~sExecution of '$@' failed with code $R"
    sed s/^~/~~/ < $T
) | mail -I $(id -nu) || cat $T
fi
