zoukankan      html  css  js  c++  java
  • 邮件群发 linux

    #!/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)

  • 相关阅读:
    Chrome开发者工具详解(1)
    Chrome开发者工具详解(2)
    Ubuntu ADSL拨号上网
    Bash中单引号和双引号的区别
    建立菜单
    波浪号和Hyphen扩展
    标准IO和重定向
    Bash变量扩展修改符
    mysql主键约束和唯一性约束
    Here文档
  • 原文地址:https://www.cnblogs.com/aggavara/p/2854723.html
Copyright © 2011-2022 走看看