请问如何在shell里面发email?
google一下, 发现很多方法都不能满足要求, 希望能有经验者指条明道.要求为:
1)支持SMTP的认证. 可以设置SMTP host, port, account, password.
2)支持附件.
3)如果能支持subject和信体的encoding更好. telnet mailserver 25 开什么玩笑. :shock: mutt :?: 不知道 关注中... 好麻烦哦 不知道,从没有用过!!...........高手指教....... 自己看下面的shell脚本吧,不多说了。
#!/bin/sh
function echo_help(){
echo "Usage:"
echo "sh mailto.sh -to mailaddr -file messagefilename [-from frommailaddr] [-subject mailsubject] [-fname showname] [-tname toshowname]"
}
email="[email protected]"
emailname="Test Mail"
messagebody="tmp.tmp"
from="[email protected]"
fromname="MailReport"
subject="Mail Report"
until [ $# -eq 0 ]
do
tmpV=$1
if [ $tmpV = "-from" ] ; then
shift
tmpV=$1
from=$tmpV
elif [ $tmpV = "-to" ] ; then
shift
tmpV=$1
email=$tmpV
elif [ $tmpV = "-subject" ] ; then
shift
tmpV=$1
subject=$tmpV
elif [ $tmpV = "-file" ] ; then
shift
tmpV=$1
messagebody=$tmpV
elif [ $tmpV = "-fname" ] ; then
shift
tmpV=$1
fromname=$tmpV
elif [ $tmpV = "-tname" ] ; then
shift
tmpV=$1
emailname=$tmpV
elif [ $tmpV = "--help" -o $tmpV = "-h" ] ; then
echo_help
exit 1
fi
shift
done
if ! test -f ${messagebody} ; then
echo "${messagebody} not exists!"
echo_help
exit 2
fi
echo "begin send..."
echo -e "To: \"${emailname}\" <${email}>
From: \"${fromname}\" <${from}>
Subject: ${subject}
`cat ${messagebody}`" | /usr/sbin/sendmail -t
echo "send OK."
先谢谢您的代码, 不过上面的代码不符合我提的三个要求.
1)在shell中用了本机的sendmail来作MTA,不是使用其他的SMTP server的. 当然也就不能设置"SMTP host, port, account, password."
2)没有支持附件(应该Base64压码吧?)
3)没有对subject encoding.
页:
[1]