#!/bin/sh
date=`date +%Y-%m-%d` #获取当天的日期
lastweek=`date +%Y-%m-%d -d "6 days ago"` #获取6天前的日期
sender="my@domain.com" #发信人email
r1="test1@domain.com" #收信人email
r2="test2@domain.com" #收信人email
reciver="$r1;$r2"
subject="主题($date)"
email_content_txt="out.txt" #存放邮件内容的文件
smtp='mail.domain.com' #邮件服务器地址
mesge() {
cat << EOF
From: <$sender>
To: <$reciver>
Subject: $subject
Date: `date` +0800
Mime-Version: 1.0
Content-Type: text/plain; charset="gbk"; format=flowed
#Content-Type: text/plain; charset="gb2312"; format=flowed
X-Mailer: Solaris Mail Client
X-MimeOLE: Powered by Solaris
EOF
test -r $email_content_txt && cat $email_content_txt
}
#
send_mail()
{
(
sleep 5
for comm in "helo domain.com" "mail from:<$sender>" "rcpt to:<$1>" "data"
do
echo "$comm"
sleep 3
done
mesge
sleep 3
echo "."
) | telnet $smtp 25
}
./statlogin $lastweek $date ipTrace.log $email_content_txt
echo "" >> $email_content_txt
echo "" >> $email_content_txt
echo "如有疑问,请与***联系,谢谢!" >> $email_content_txt
#Invoke: funDeliver $r1
funDeliver()
{
nRetry=10 #发信失败时,重试的次数
nTime=0
nLine=0
while [ $nLine -lt 8 ] #成功发送返回的消息应该是8行
do
if [ $nTime -gt 0 ]; then
echo "Failed to deliver, retry: $nTime"
fi
nTime=`expr $nTime + 1`
if [ $nTime -gt $nRetry ]; then
echo "Error!!! Failed: deliver to $1"
#exit 1
return
else
send_mail $1 > info.tmp #将执行结果写入临时文件
nLine=`cat info.tmp | wc -l`
fi
done
if [ $nLine -eq 8 ]; then
echo "Succeed: deliver to $1"
fi
}
logfile="email.log" # 定义日志文件,通过查看日志文件,看是否成功发送。
echo `date` >> $logfile
funDeliver $r3 >> $logfile
rm -f info.tmp
echo "" >> $logfile
########################################
将下面的语句加入crontab,每周日的23点自动执行,ok,大功告成,哈哈!
0 23 * * 0 (cd /home/zhj/automail/; sh automail.sh >> /dev/null 2 >> error_crontab.log)