daniel_zhy 发表于 2005-12-6 09:07:39

请问如何在shell里面发email?

google一下, 发现很多方法都不能满足要求, 希望能有经验者指条明道.

要求为:
1)支持SMTP的认证. 可以设置SMTP host, port, account, password.
2)支持附件.
3)如果能支持subject和信体的encoding更好.

gugong 发表于 2005-12-6 11:37:53

telnet mailserver 25

daniel_zhy 发表于 2005-12-6 11:58:22

开什么玩笑. :shock:

MichaelBibby 发表于 2005-12-6 12:11:56

mutt :?:

BOoRFGOnZ 发表于 2005-12-15 14:57:26

不知道 关注中...

dragoncgs 发表于 2005-12-21 15:54:41

好麻烦哦

arlly 发表于 2005-12-21 15:59:00

不知道,从没有用过!!...........高手指教.......

demonlj 发表于 2005-12-21 16:44:06

自己看下面的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."

daniel_zhy 发表于 2005-12-27 12:38:59

先谢谢您的代码, 不过上面的代码不符合我提的三个要求.
1)在shell中用了本机的sendmail来作MTA,不是使用其他的SMTP server的. 当然也就不能设置"SMTP host, port, account, password."

2)没有支持附件(应该Base64压码吧?)

3)没有对subject encoding.
页: [1]
查看完整版本: 请问如何在shell里面发email?