利用linux調(diào)用sendmail模塊方式發(fā)郵件比程序?qū)懙恼{(diào)用mail函數(shù)的速度要快多倍,例如發(fā)送每封促銷郵件大約15秒左右,發(fā)送代碼我已寫成一個(gè)shell文件,通過設(shè)置要執(zhí)行文件的路徑便可輕松發(fā)送郵件,前提需要配置sendmail模塊
#!/bin/sh
mysql -u admin -D gets_cn -padmin </backup/tmp/script.sql >/backup/tmp/result #執(zhí)行sql語句讀取客戶email地址并將結(jié)果生成result文件里
mkdir /backup/tmp/emailpath
chmod 0777 /backup/tmp/emailpath
awk -F '[/t]' '{print $1}' result >/backup/tmp/emailpath/emailAddress #將客戶郵箱地址生成到指定的文件里,便于讀取轉(zhuǎn)為數(shù)組
awk -F '[/t]' '{print $2}' result >/backup/tmp/emailpath/emailBakAddress #將客戶備份郵箱地址生成到指定的文件里,便于讀取轉(zhuǎn)為數(shù)組
EMAILADDPATH="/backup/tmp/emailpath/emailAddress" #客戶郵箱地址文件
EMAILADDBAKPATH="/backup/tmp/emailpath/emailBakAddress" #客戶備份郵件地址文件
EMAILBODY="/backup/tmp/chritmas.html" #郵件內(nèi)容文件
SUBJECT="Merry Christmas From Gets.cn" #設(shè)置郵件標(biāo)題
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[@]}
#統(tǒng)計(jì)共多少個(gè)客戶
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 正在發(fā)送第$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封郵件發(fā)送成功!
done
以上為shell程序
注意 客戶郵箱文件與客戶備份郵箱需要通過自動執(zhí)行上面的連接生成文件.