BASH脚本中使用sendmail命令发邮件
思韵闪耀
2013-03-18
0

利用linux调用sendmail模块方式发邮件比程序写的调用mail函数的速度要快多倍,例如发送每封促销邮件大约15秒左右,发送代码我已写成一个shell文件,通过设置要执行文件的路径便可轻松发送邮件,前提需要配置sendmail模块

#!/bin/sh
mysql -u admin -D gets_cn -padmin </backup/tmp/script.sql >/backup/tmp/result   #执行sql语句读取客户email地址并将结果生成result文件里
mkdir /backup/tmp/emailpath
chmod 0777 /backup/tmp/emailpath
awk -F '[/t]' '{print $1}' result >/backup/tmp/emailpath/emailAddress   #将客户邮箱地址生成到指定的文件里,便于读取转为数组
awk -F '[/t]' '{print $2}' result >/backup/tmp/emailpath/emailBakAddress #将客户备份邮箱地址生成到指定的文件里,便于读取转为数组
EMAILADDPATH="/backup/tmp/emailpath/emailAddress"   #客户邮箱地址文件
EMAILADDBAKPATH="/backup/tmp/emailpath/emailBakAddress"  #客户备份邮件地址文件
EMAILBODY="/backup/tmp/chritmas.html"   #邮件内容文件
SUBJECT="Merry Christmas From Gets.cn"   #设置邮件标题
FROM="Milky Way Jewelry - Gets.cn <sales@gets.cn>"
echo "读取客户email"
j=0
while read line
do
let j++
emailAddressArr[$j]=$line
done < ${EMAILADDPATH}
#echo ${emailAddressArr[@]}
echo "读取客户备份email"
k=0
while read line
do
let k++
emailBakAddressArr[$k]=$line
#echo ${emailBakAddressArr[$k]}
done < ${EMAILADDBAKPATH}
#echo ${emailBakAddressArr[@]}
#统计共多少个客户
len=${#emailAddressArr[*]}
let total=len-1;
echo 共${total}位客户:
l=1
while [ $l -lt $len ]
do
let l++
toAdd="-i To:${emailAddressArr[$l]}"
if [ ["${emailBakAddressArr[$l]}" != -n] ];then
if [ "${emailBakAddressArr[$l]}" != NULL ];then
ccAdd="-i Cc:${emailBakAddressArr[$l]}"
fi
fi
let nextlmail=l-1
echo 正在发送第$nextlmail封邮件
cat ${EMAILBODY} |formail -i "From:${FROM}" -i "Sender:sales@gets.cn" $ccAdd -i "Reply-To:sales@gets.cn" $toAdd -i "MIME-Version:1.0" -i "Content-type:text/html;charset=uft-8" -i "Subject:${SUBJECT}"|/usr/sbin/sendmail -oi ${emailAddressArr[$l]}
echo 第$nextlmail封邮件发送成功!
done

以上为shell程序

注意 客户邮箱文件与客户备份邮箱需要通过自动执行上面的连接生成文件.


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

网页保护、网页图片保护
1、禁止另存网页,把如下代码加入到网页body/body中 程序代...
2025-05-30
Linux系统挂载未分配硬...
先查看未挂载之前的磁盘使用情况发现磁盘使用率已经达到了96%,迫切...
2025-02-22
Linux lsblk 命...
简介Linux 中的 lsblk 命令,全称叫做:list blo...
2025-02-22
linux内核5和6区别
Linux内核5.x和6.x版本之间有显著的区别,这些区别主要体现...
2024-04-29
docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26
Linux中的防火墙(Ne...
NetfilterNetfilter是Linux 2.4内核引入的...
2024-03-15

热门资讯

Discus X论坛配置sen... Discuz x2.5 后台邮件设置方法其实和X2/x1.5基本一样,但很多同学都不注意一些细节,比...
redhat Linux系统配... 1 .检查Send Mail 的安装包 [root@sql root]# rpm -qa | gre...
使用Sendmail的反垃圾邮... 在最近几年,无处不在的垃圾邮件已使得所有邮件箱不堪重负,不断地需要工具以抗击这一无穷尽的垃圾邮件流。...