#!/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;