#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: email -s SUBJECT ADDRESS... < BODY email -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 Send an email to ADDRESS using BODY. Examples: Send 10 numbers to mail@example.com: $ seq 10 | email -s number mail@email.com 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)) eval "$(assert-arg "${SUBJECT:-}" '-s SUBJECT')" eval "$(assert-arg "${1:-}" 'ADDRESS')" printf 'Content-Type: text/plain; charset=UTF-8\nSubject: %s\n\n%s' \ "$(echo "$SUBJECT" | tr -d '\n')" \ "$(cat)" | msmtpq -a EuAndreh "$@"