#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: mail -s SUBJECT ADDRESS... < BODY mail -h EOF } help() { cat <<-'EOF' Options: -s SUBJECT the email subject -h, --help show this message ADDRESS the email addresses to send the email to BODY the text to be sent as the body EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 's:h' flag; do case "$flag" in s) SUBJECT="$OPTARG" ;; h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) assert_arg() { if [ -z "$1" ]; then { printf 'Missing %s.\n' "$2" printf '\n' usage } >&2 exit 2 fi } assert_arg "${SUBJECT:-}" '-s SUBJECT' assert_arg "${1:-}" 'ADDRESS' printf 'Subject: %s\n\n%s' \ "$(echo "$SUBJECT" | tr -d '\n')" \ "$(cat)" | msmtpq -a euandreh "$@"