#!/bin/bash

if [ "$#" == "0" ]; then
    echo "Usage: mail [OPTION] to-addr[,to-addr]";
    echo "Simple mailx mail implementation, based on ssmtp.";
    echo -e "No interactive mode, no syntax checking, recipient address must be the last parameter.\n"
    echo "  -e           do not send empty mail";
    echo "  -v           verbose mode";
    echo "  -a header    additional headers";
    echo "  -s subject   ";
    echo "  -c cc-addr   cc recipients";
    echo "  -b bcc-addr  bcc recipients";
    exit;
fi

if [ "$SENDMAIL" == "" ]; then
    SENDMAIL="/usr/sbin/ssmtp";
fi
if [ ! -x "$SENDMAIL" ]; then
    echo "Can't find \"$SENDMAIL\"."
    echo "Please install ssmtp or set the SENDMAIL environment variable to the path to your MTA.";
    exit;
fi

STDIN="$(cat)";

NL=$'\n'
while getopts "eva:s:c:b:" OPTION
do
    case "$OPTION" in
	e) if [ "$STDIN" == "" ]; then exit; fi; ;;
	v) FLAGS="-v"; ;;
	a) XHDR="${OPTARG}${NL}"; ;;
	s) SUBJ="Subject: ${OPTARG}${NL}"; ;;
	c) CCHDR="Cc: ${OPTARG}${NL}"; ;;
	b) BCCHDR="Bcc: ${OPTARG}${NL}"; ;;
    esac;
done

TOHDR="To: $(eval echo \"\$\{$OPTIND\}\")${NL}";
FULLNAME="$(id -un)@$(hostname)";

# Message contents may include "\n" strings (a code source for example), so we can not use "echo -e".
echo -E "${TOHDR}${CCHDR}${BCCHDR}${XHDR}${SUBJ}${NL}${STDIN}" | $SENDMAIL ${FLAGS} -F"${FULLNAME}" -t;
