diff options
Diffstat (limited to 'minimailer')
-rwxr-xr-x | minimailer | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/minimailer b/minimailer new file mode 100755 index 0000000..09c66ae --- /dev/null +++ b/minimailer @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# +# Send mails based on a template and a recipient list using MSMTP. +# +# See also https://hostpresto.com/community/tutorials/how-to-send-email-from-the-command-line-with-msmtp-and-mutt/ +# https://deaddabe.fr/blog/2021/10/06/sending-templated-emails-using-python-and-msmtp/ +# + +# Example template file +cat > /dev/null <<EOF +To: recipient +From: myself@mydomain +Subject: Email Test using MSMTP from File + +Hi $recipient! This is an automated message. + +King regards, +Myself + +-- +my signature +EOF + +# Example recipient list +cat > /dev/null <<EOF +Some One <someone@example.org> +somebody@example.org +EOF + +# Parameters +BASENAME="`basename $0`" +BASEDIR="`dirname $0`" +#TEMPLATE="$BASEDIR/message.tmpl" +#RECIPIENTS="$BASEDIR/recipients.lst" +#MSMTP_ACCOUNT="my-smtp-account-from-msmtprc" +TEMPLATE="$1" +RECIPIENTS="$2" +MSMTP_ACCOUNT="$3" + +# Checks +if [ -z "$MSMTP_ACCOUNT" ]; then + echo "usage: $BASENAME <template-file> <recipients-filelist> <msmtp-account-name>" + echo "example: $BASENAME message.tmpl recipients.lst my-provider" + echo "check the source code for template and recipient filelist formats" + exit 1 +elif [ ! -e "$TEMPLATE" ] || [ ! -e "$RECIPIENTS" ]; then + echo "missing config files" + exit 1 +fi + +# Dispatch +cat $RECIPIENTS | while read recipient; do + # Thanks for the quick sed regexp: + # https://linuxconfig.org/extract-email-address-from-a-text-file + address="`echo $recipient | sed -r 's/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/\n&\n/ig;s/(^|\n)[^@]*(\n|$)/\n/g;s/^\n|\n$//g;/^$/d'`" + + sed -e "s/\$recipient/$recipient/g" $TEMPLATE | \ + msmtp -a $MSMTP_ACCOUNT $address +done |