ネット上では、いろんなサンプルがあったが、自分の環境では動かなかったので、
サンプルを参考にして作成した
openssl のオプションに「-crlf」「-quiet」
base64 のオプションに「--wrap=0」
をつけるのがポイント
使用感を、mail コマンドと同じようにしたので、
メール送信するときは下記のようにする
echo "testbody" | smtp-gmail.sh -s 'testsubject' 'testmailto@example.org'
--- smtp-gmail.sh ---
#!/bin/bash
MAILFROM='foo@gmail.com'
USERNAME='foo@gmail.com'
PASS='testpassword'
#########################
### this is no arg setting
MAILTO='bar@gmail.com'
MAILSUB="no title"
GMAILSERVER="smtp.gmail.com:587"
PG_OPENSSL="openssl"
########################
GMAILAUTH=`echo -en "${USERNAME}\\0${USERNAME}\\0${PASS}" | base64 --wrap=0`
MAILBODY=`cat - | sed 's/^.$/../g'`
###echo "${GMAILAUTH}"
###exit 0
#
# usage
#
_usage() {
echo "usage:"
echo "${0##*/} [-s subject] mail-to
echo "-s XX mail-subject"
echo ""
exit 1
}
#
# getopts
#
while getopts :s: OPT; do
case ${OPT} in
s) MAILSUB="${OPTARG}";
shift;
shift;
MAILTO="${1}";
;;
:|\?) _usage;;
*) _usage;;
esac
done
( sleep 4;
echo "EHLO "`hostname`;
sleep 2;
echo "AUTH PLAIN ${GMAILAUTH}"
sleep 2;
echo "MAIL FROM: <${MAILFROM}>";
sleep 2;
echo "RCPT TO: <${MAILTO}>";
sleep 2;
echo "DATA";
sleep 2;
echo "from: <${MAILFROM}>";
echo "to: <${MAILTO}>";
echo "Subject: ${MAILSUB}";
echo "";
echo "${MAILBODY}";
echo ".";
sleep 2;
echo "QUIT";
) | "${PG_OPENSSL}" s_client -starttls smtp -crlf -quiet -connect "${GMAILSERVER}"
--------