diff options
Diffstat (limited to 'bin/email')
-rwxr-xr-x | bin/email | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/bin/email b/bin/email new file mode 100755 index 0000000..87d1cec --- /dev/null +++ b/bin/email @@ -0,0 +1,73 @@ +#!/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 "$@" |