#!/bin/bash SMTP_HELO=localhost SMTP_HOST=localhost ENV_FROM=${1:?missing FROM address} ENV_TO=${2:?missing TO address} function die { echo "Error: $1" >&2 exit 1 } function expect { [ "$1" ] && ( echo "$1" >&3 || die "Could not write to MTA: $1" ) read line <&3 || die "Could not read from MTA" [[ "$line" =~ "$2 " ]] || die "Unexpected response to $1: $line" } exec 3<>"/dev/tcp/$SMTP_HOST/25" || die "Could not connect to MTA" expect "" 220 expect "HELO $SMTP_HELO" 250 expect "MAIL FROM:$ENV_FROM" 250 expect "RCPT TO:$ENV_TO" 250 expect "DATA" 354 cat >&3 expect "." 250 expect "QUIT" 221